Risposte:
xmodmap
è obsoleto; quindi in effetti dovrebbe essere fatto con gli xkb
strumenti.
Lo swap desiderato non sembra essere incluso per impostazione predefinita con i file X11; quindi devi scriverlo tu stesso.
La pagina http://madduck.net/docs/extending-xkb/ mi ha aiutato a capire e trovare un modo per farlo.
Crea un file ~/.xkb/keymap/mykbd
dove metti l'output di setxkbmap
, sarà la tua definizione di tastiera di base; per esempio:
setxkbmap -print > ~/.xkb/keymap/mykbd
quindi, crea un file di simboli per definire lo scambio di chiavi, inseriscilo ad esempio in ~/.xkb/symbols/myswap
lì, inserisci le seguenti righe:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
quindi, modifica il ~/.xkb/keymap/mykbd
file e modifica la xkb_symbols
riga da aggiungere
+myswap(swap_l_shift_ctrl)
infine, puoi caricarlo con xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(non puoi usare "~" per il -I
parametro). Probabilmente sputerà molti avvisi su simboli indefiniti per alcune chiavi rare, ma puoi ignorarli (ad esempio, reindirizzare l'errore a dave:) 2> /dev/null
.
Se vuoi essere in grado di scambiare facilmente tra uno normale e il tuo ctrl / shift invertito; basta creare ~/.xkb/keymap/
un altro file, senza l'opzione "myswap" aggiuntiva e caricarlo con xkbcomp
. È possibile creare due piccoli script per caricarli.
xkbcomp $DISPLAY some.dump
dopo e prima di chiamare IBus e fai una diff dei due dump (quelli sono la definizione completa della tastiera); probabilmente vedrai differenze.
setxkbmap -option caps:escape
funziona. IBus ha ricordato i tasti scambiati Tasti Esc e Caps_Lock Ma non lo è per i tasti Maiusc sinistro e Controllo sinistro scambiati.
Mi sono imbattuto in alcuni problemi di mappatura LALT
per l' Control_L
utilizzo della soluzione di Pablo , sembra che sia necessario impostare anche le modifier_map
opzioni.
Ho copiato un modello da /usr/share/X11/xkb/symbols/altwin
- cerca xkb_symbols "ctrl_alt_win"
- e modificato per impostare le seguenti modifiche:
Il ~/.xkb/symbols/myswap
file finale era:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
Ho anche aggiunto -w0
al xkbcomp
comando per evitare qualsiasi output di avviso quando si apre una nuova shell.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Passando molto da Mac a Linux, mi piace avere due tasti di controllo su Linux per approssimare la tastiera del Mac per la mia memoria muscolare.