Dato che vuoi rimappare le chiavi per tutte le applicazioni, l'opzione migliore è usare xmodmap. È flessibile e molto potente ma comporta la digitazione di alcuni comandi in un terminale.
Step 0 - L'approccio
L'X-server gestisce la tastiera e tutti gli eventi chiave e li traduce in codici chiave per tutte le applicazioni.
L'approccio sarebbe quello di mappare un tasto modificatore (come il tasto Super o Alt destro) come il tasto "interruttore modalità" e dire all'X-server di generare codici diversi a seconda che un tasto sia premuto tenendo premuto il tasto Mode.
Per impostazione predefinita, non è definito alcun tasto selettore di modalità e inoltre tutti i tasti sono configurati per generare lo stesso codice quando vengono premuti con o senza selettore di modalità. Ciò è positivo poiché ciò significa che, ad eccezione delle chiavi che sostituisci esplicitamente, nessun'altra chiave si comporterà diversamente o necessiterà di una configurazione aggiuntiva.
Tuttavia, vorrei che tu prendessi in considerazione l'uso del tasto Alt destro come selettore di modalità, specialmente se stai usando anche compiz poiché alcuni plugin compiz mappano le scorciatoie da tastiera dei tasti super (ad esempio, selettore di finestre, selettore di spostamento ecc.). Se non sei interessato a controllare Compiz tramite la tastiera, allora Super va bene.
In xmodmap, le super chiavi sono identificate come Super_L o Super_R. Devi sceglierne uno da utilizzare come tasto di commutazione modalità. In alternativa, il tasto alt destro è Alt_R. Puoi confermarli eseguendo xev e premendo i tasti necessari sulla tastiera. Vedi questo post per i passaggi.
Passaggio 1: impostazione della mappa dei modificatori
Apri un terminale ( Applications -> Accesories -> Terminal
) ed esegui il comando seguente per creare un file con le associazioni dei tasti correnti . Useremo questo come punto di partenza.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Apri questo nel tuo editor di testo preferito. gedit curkeys.map &
lo apre in gedit. Verso la fine del file, vedrai alcune righe come questa:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Elimina la riga che inizia con "xmodmap: fino a 4 ..."
Modifica la mappa del modificatore in modo che appaia così. Inserisci la parola "aggiungi" all'inizio di ogni riga e inserisci "=" dopo il nome del modificatore. Quindi rimuovere i codici tra parentesi e virgole. Nota anche che mi sono spostato Mode_switch
da una mod5
riga all'altra mod3
poiché era vuoto. La tabella modificata dovrebbe apparire così: i contenuti effettivi variano leggermente nel tuo caso da quelli sotto (dipende dal layout della tastiera).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Rimappare la chiave di commutazione della modalità fisica. Aggiungi una riga come questa alla fine (sostituisci Super_L con Super_R o Alt_R se necessario).
keysym Super_L = Mode_switch
Rimuovi il nome chiave (Super_L) da qualsiasi definizione di modificatore. Per Super_L questo significa rimuoverlo dalla linea mod4.
add mod4 = Super_R Hyper_L
Ora il tasto "Super" destro agirà comunque come un normale tasto super mentre il tasto sinistro avrà proprietà speciali.
Ora dobbiamo rimappare i tasti per produrre codici diversi indipendentemente dal fatto che vengano premuti tenendo premuto Super_L o meno. Ogni riga nel nostro file che inizia con keycode
specifica 4 palestra per ogni tasto da generare in base alla pressione di Mod1 (tasti maiuscole) e selettori di modalità. ( Collegamento )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Se vogliamo che il tasto Super_L + k generi un tasto "+", dobbiamo modificarlo per leggerlo
keycode 45 = k K plus plus
Il plus finale mappa anche Shift + Super_L + k su plus, ma questo può essere mappato su qualcos'altro. Per ogni tasto c'è esattamente 1 riga da modificare. Modifica più righe per rimappare più chiavi: lascia intatte le prime 2 voci per mantenere il normale comportamento di pressione dei tasti.
Salvare il file ed uscire dall'editor.
Installa la mappa dei tasti eseguendo i seguenti comandi in un terminale. Il primo lo imposta per questa sessione, il secondo lo rende permanente per le sessioni future.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Puoi provarlo immediatamente premendo i tasti modificati (ad esempio Super_L + k).
Passaggio 3: aggiunta / revisione della mappa
Una volta installata la mappa modificata, è facile aggiungere nuove chiavi.
Usa xev per trovare i codici chiave e le keyestre
testarlo eseguendo questo comando per mappare la chiave:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Sostituisci gli elementi tra parentesi angolari (come <code>
<base>
ecc.) Con i valori appropriati.
Eseguire il backup del curkeys.map
file.
- Aprire
curkeys.map
e modificare la riga per il codice chiave corrispondente.
Riapplicare con i comandi seguenti (il primo non è necessario se si è eseguito il passaggio 2)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Nota: 1 : le modifiche apportate nelle scorciatoie da tastiera (tramite ad esempio, System -> Preferences -> Keyboard Shortcuts
) influiscono sulla mappa del modificatore e andranno generalmente perse al prossimo accesso. Quindi, per favore, evitatelo.
Nota: 2 : a volte ricevo messaggi di errore come questo mentre utilizzo questo metodo. Non so cosa significhi, tuttavia, questi sono generalmente innocui.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
La guida dettagliata per xmodmap è disponibile qui .