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
paraControl_L
usar a solução de Pablo , parece que você precisa definir asmodifier_map
opções também.Copiei um modelo de
/usr/share/X11/xkb/symbols/altwin
- procurexkb_symbols "ctrl_alt_win"
- e modifiquei para definir as seguintes alterações:O
~/.xkb/symbols/myswap
arquivo final foi:Também adicionei
-w0
aoxkbcomp
comando para evitar qualquer saída de aviso ao abrir um novo shell.** 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.
fonte