xmodmap
está obsoleto; então, de fato, isso deve ser feito com as ferramentas xkb
.
A troca que você deseja parece não ser incluída por padrão com arquivos X11; então você tem que escrever você mesmo.
A página link me ajudou a entender e encontrar uma maneira de fazer isso.
Crie um arquivo ~/.xkb/keymap/mykbd
onde você coloca a saída de setxkbmap
, esta será sua definição de teclado base; por exemplo:
setxkbmap -print > ~/.xkb/keymap/mykbd
em seguida, crie um arquivo de símbolos para definir a troca de chaves, coloque-o por exemplo em ~/.xkb/symbols/myswap
lá, 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 arquivo ~/.xkb/keymap/mykbd
e altere a linha xkb_symbols
para adicionar
+myswap(swap_l_shift_ctrl)
finalmente, você pode carregá-lo com xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(você não pode usar "~" para o parâmetro -I
).
Provavelmente, ele emitirá muitos avisos sobre símbolos indefinidos para algumas chaves raras, mas você pode ignorá-los (por exemplo, redirecionar erro para dave: 2> /dev/null
).
Se você quiser ser capaz de alternar facilmente entre um normal e seu invertido ctrl / shift; basta criar em ~/.xkb/keymap/
outro arquivo, sem a opção extra "myswap", e carregá-lo com xkbcomp
. Você pode fazer dois pequenos scripts para carregá-los.