Respostas:
xmodmap
é obsoleto; então, de fato, isso deve ser feito com as xkb
ferramentas.
A troca que você deseja parece não ser incluída por padrão com os arquivos X11; então você tem que escrever você mesmo.
A página http://madduck.net/docs/extending-xkb/ me ajudou a entender e encontrar uma maneira de fazê-lo.
Crie um arquivo ~/.xkb/keymap/mykbd
onde você coloca a saída setxkbmap
, será sua definição de teclado base; por exemplo:
setxkbmap -print > ~/.xkb/keymap/mykbd
em seguida, crie um arquivo de símbolos para definir sua troca de chaves, por exemplo, em ~/.xkb/symbols/myswap
coloque as seguintes linhas:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
edite o ~/.xkb/keymap/mykbd
arquivo e altere a xkb_symbols
linha para adicionar
+myswap(swap_l_shift_ctrl)
finalmente, você pode carregá-lo xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(você não pode usar "~" para o -I
parâmetro). Provavelmente emitirá muitos avisos sobre símbolos indefinidos para algumas chaves raras, mas você pode ignorá-las (por exemplo, erro de redirecionamento para dave:) 2> /dev/null
.
Se você deseja trocar facilmente entre um normal e o seu invertido, pressione Ctrl / Shift; basta criar em ~/.xkb/keymap/
outro arquivo, sem a opção extra "myswap", e carregá-lo com xkbcomp
. Você pode criar dois pequenos scripts para carregá-los.
xkbcomp $DISPLAY some.dump
depois e antes de ligar para o IBus e faça uma comparação dos dois dumps (esses são a definição completa do teclado); você provavelmente verá diferenças.
setxkbmap -option caps:escape
funciona. O IBus lembrou as teclas trocadas Esc e Caps_Lock, mas isso não acontece com as teclas Shift esquerda e Controle esquerdo trocadas.
Corri para alguns problemas de mapeamento LALT
para Control_L
usar a solução de Pablo , parece que você precisa definir as modifier_map
opções também.
Copiei um modelo de /usr/share/X11/xkb/symbols/altwin
- procure xkb_symbols "ctrl_alt_win"
- e modifiquei para definir as seguintes alterações:
O ~/.xkb/symbols/myswap
arquivo final foi:
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> };
};
Também adicionei -w0
ao xkbcomp
comando para evitar qualquer saída de aviso ao abrir um novo shell.
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** Alternando muito entre Mac e Linux, eu gosto de ter duas teclas de controle no Linux para aproximar o teclado do Mac da minha memória muscular.