lunedì 23 marzo 2009

Impostare scorciatoie da tastiera con xbindkeys

Utilizzando GNOME come ambiente desktop è possibile impostare delle combinazioni da tastiera senza installare alcun programma semplicemente da SistemaPreferenzeScorciatoie da tastiera. Oggi però ho voluto provare un metodo "alternativo" per impostare le scorciatoie. xbindkeys può tornare utile se si utilizzano desktop environment diversi da GNOME e che non offrono la possibilità di modificare le scorciatoie (per esempio, in questi giorni sto provando LXDE non ho trovato altri modi di impostare scorciatoie personalizzate Come segnalato da un lettore anonimo, in LXDE è possibile impostare le scorciatoie modificando il file ~/.config/openbox/lxde-rc.xml. Maggiori informazioni a questo proposito possono essere trovate qui). Vi illustro le operazioni da fare.

Per prima cosa dovete installare il programma necessario che si chiama xbindkeys. Potete installarlo con Synaptic oppure da terminale con il comando
sudo apt-get install xbindkeys
Se dopo aver installato il pacchetto provate a dare il comando
xbindkeys
leggerete questo messaggio di errore:
Error : /home/nomeutente/.xbindkeysrc not found or reading not allowed.
please, create one with 'xbindkeys --defaults > /home/nomeutente/.xbindkeysrc'.
or, if you want scheme configuration style,
with 'xbindkeys --defaults-guile > /home/nomeutente/.xbindkeysrc.scm'.

(ovviamente al posto di nomeutente comparirà il nome del vostro utente) quindi, come suggerito, digitate il comando
xbindkeys --defaults > ~/.xbindkeysrc
(vi ricordo che la tilde ~ è un'abbreviazione del percorso della vostra cartella home). È stato dunque creato il file .xbindkeysrc nella vostra cartella home. Il suo nome inizia con il punto e questo significa che è un file nascosto. Per vederlo, entrate nella vostra home (RisorseCartella home) e, se non visualizzate i file nascosti, premete i tasti [ CTRL ] + [ H ] per far "apparire" il nostro file. Potete quindi aprire .xbindkeysrc per guardarlo.

In ogni riga, tutto ciò che si trova alla destra del cancelletto # è un cosiddetto commento. Ciò che vi interessa sono le righe del tipo
"xterm"
c:41 + m:0x4

in cui la prima indica il comando da eseguire (xterm è un emulatore del terminale) e la seconda corrisponde alla combinazione di tasti da premere per eseguire il comando (in questo caso dovrebbe essere [ CTRL ] + [ F ]).

Ora però noi vogliamo aggiungere una nuova scorciatoia da tastiera per velocizzare le operazioni più comuni. Per esempio, vogliamo creare la scorciatoia [ ALT ] + [ T ] per aprire il terminale di GNOME che si invoca con il comando gnome-terminal (e che è diverso esteticamente dal terminale che si apre con il comando xterm). Nel terminale inserite il comando
xbindkeys -k
oppure
xbindkeys --key
e vi uscirà scritto
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.

e quindi premete la combinazione di tasti che vi interessa (nell'esempio sarà [ ALT ] + [ T ]). Dopo che avrete premuto i tasti comparirà la scritta
"(Scheme function)"
m:0x18 + c:28
Alt+Mod2 + t

Ora per completare l'operazione non vi resta che ricopiare nel file .xbindkeysrc, prima della stringa End of xbindkeys configuration, queste tre righe, sostituendo (nel nostro esempio) a "(Scheme function)" la scritta "gnome-terminal". Un consiglio utile è di scrivere un piccolo commento prima del comando, in modo da ricordarsi in seguito qual è la combinazione aggiunta. Quindi, in concreto, dovrete aggiungere le seguenti righe:
# Apre "gnome-terminal" con la combinazione ALT + T
"gnome-terminal"
m:0x18 + c:28
Alt+Mod2 + t

Potete anche aggiungere solo una delle ultime due righe (m:0x18 + c:28 oppure Alt+Mod2 + t).

Se avete intenzione di aggiungere numerose combinazioni di tasti, non c'è bisogno di usare il comando xbindkeys -k ogni volta, potete usare
xbindkeys -mk
oppure
xbindkeys --multikey
e poi premere il tasto [ Q ] quando avete finito.

Le combinazioni di tasti possono anche comprendere i tasti del mouse. Normalmente xbindkeys non fa distinzione se siano attivi NumLock, CapsLock e ScrollLock. Se invece volete impostare questo controllo dovete decommentare (cioè rimuovere il #) prima delle seguenti righe (nel mio file .xbindkeysrc compaiono ai righi 36-38)
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable

Ovviamente potete anche decommentare solo quello che vi interessa, non necessariamente tutti e tre.

Una volta che è pronto il vostro file di configurazione per xbindkeys vi resta un'ultima semplice operazione da fare: seguendo queste istruzioni aggiungete ai programmi in esecuzione automatica all'avvio della sessione il comando xbindkeys.

7 commenti:

  1. In realtà non c'è bisogno di istallare xbindkeys su lxde. Basta editare ~/.config/openbox/lxde-rc.xml e inserire un'apposita sezione nel settore del file dedicato ai keybind, dopo la voce e prima della voce . La sintassi è semplice e comunque basta fare un copia-incolla di una sezione simile. Ad esempio:



    setxkbmap us


    Oppure:



    amixer set Master 2dB- unmute


    Per sapere il nome di un tasto basta lanciare da terminale il programma xev, premere il tasto che interessa e leggere il nome del tasto alla terza riga che viene aggiunta sotto KeyRelease event: tra parentesi tonde ci sono tre parole, la terza dopo la virgola è il nome del tasto.

    RispondiElimina
  2. opppss
    non mi ha scritto gli esempi. Ha interpretato la sintassi. Comunque ha lasciato il comando per impostare il layout della tastiera e quello per diminuire il volume. Quello che manca si può trovare nel file indicato. Non ho voglia adesso di riscrivere tutto...

    RispondiElimina
  3. Grazie per la segnalazione! Ho aggiunto la precisazione linkando anche il sito http://openbox.org/wiki/Help:Bindings che riporta le istruzioni per modificare il file.

    Comunque xbindkeys rimane utile per impostare le scorciatoie in maniera indipendente dall'ambiente desktop usato.

    Ciao e di nuovo grazie!

    RispondiElimina
  4. Di nulla. In realtà sono finito su questo sito perché stavo cercando di risolvere un problema. Magari puoi aiutarmi.
    Premessa: ho deciso di abbandonare sia kde (il mio preferito finora) sia gnome, sia persino xfce. Sono passato a lxde non perché il mio computer sia vecchio ma perché mi piace proprio. Semplice da configurare e tutto sommato abbastanza versatile da poterci usare con soddisfazione e maggiore velocità programmi fatti per kde, gnome o xfce. L'unico problema è che richiede tempo per poterlo personalizzare e far girare al meglio.
    Ora però mi sono imbattuto in una mancanza fastidiosa. Ovvero: il mio computer ha i tasti speciali per interagire con i programmi che gestiscono video e musica. Per quanto riguarda il suono ho potuto configurarli semplicemente editando il file di cui sopra. Però per i tasti mettere in pausa, fermare, passare al brano successivo o precedente non è altrettanto semplice. Si possono apparentemente configurare solo per un programma, oppure si deve utilizzare il sistema di nidificazione e configurarli per ogni programma utilizzato previa abilitazione specifica con combinazione ulteriore di tasti.
    Oppure mi è venuto in mente che potrei creare uno script per ogni tasto che controlla quale dei tanti programmi possibili è avviato e di conseguenza la pressione del tasto controlla quello.
    Ad ogni modo sono tutte soluzioni dispendiose di tempo.
    Conosci e/o ti viene in mente un sistema più semplice?
    Grazie in anticipo dell'eventuale risposta.
    Tommaso

    RispondiElimina
  5. Purtroppo non sono in grado di risponderti per questo problema, ma se Google non ti è di aiuto puoi provare a chiedere su qualche forum specifico di Ubuntu, c'è sempre un sacco di gente molto preparata che può darti una mano.

    Ciao!

    RispondiElimina
  6. Ciao a tutti e grazie per l'ottima guida!
    ho seguito alla lettera la descrizione ma gli shorcut non mi funzionano...
    Su autostart ho impostato xbindkeys dando il percorso del file nella home.
    Qualche consiglio?

    Uso XFCE da non molto (se non si fosse capito!!)

    Grazie a tutti in anticipo!

    RispondiElimina
  7. Il programma di avvio che devi inserire è l'eseguibile di `xbindkeys', non il file di configurazione (che non è un programma eseguibile, è un semplice file di testo). Devi scrivere solo `xbindkeys' come comando (senza virgolette ovviamente) ;-)

    Ciao

    RispondiElimina

I commenti inseriti vengono lasciati dall'autore degli stessi accettandone ogni eventuale responsabilità civile e penale.
Il curatore del blog si riserva la possibilità di eliminare messaggi contenenti frasi offensive o spam.