Keymaps do console do Linux
Para mudar os mapas de teclado dos terminais virtuais ( alt + f1 - alt + f6 ) loadkeys. Isso só afeta os logons do terminal virtual e o não altera o keymaping em aplicativos de terminal X ou X como Xterm ou urxvt .
O comando loadkeys precisa ser executado como root ou você receberá o seguinte erro:
Couldn't get a file descriptor referring to the console
Para trocar escape e caps_lock você faria o seguinte:
# echo keycode 58 = Escape | loadkeys -
# echo keycode 1 = Caps_Lock | loadkeys -
Outra opção é remapear o Caps_Lock para mudar + Scroll Lock
# echo keycode 69 = Num_Lock Caps_Lock | loadkeys -
O formato dos mapas de teclado pode ser um pouco confuso. É usando um sistema de ponderação dependendo de quais modificadores são pressionados. (Ctrl, Alt, Shift, etc). Como um exemplo da página do manual para mapas de teclado.
keycode 30 = a A VoidSymbol VoidSymbol VoidSymbol .....
Quando o shift e a é pressionado, fazemos a ação na segunda coluna porque shift tem uma ponderação de 1. control por outro lado, tem uma ponderação de quatro .
Isso pode causar problemas ao mapear modificadores. Tome por exemplo se uma primeira e única coluna de códigos de teclas é control como sua ação. Agora a ponderação desde que você pressionou agora é 4 e quando você soltar a tecla, o controle não é mostrado liberado porque a ação da quinta coluna agora deve ser executada, mas não possui nenhuma ação definida. Então a tecla control nunca é liberada.
É por isso que a maioria dos modificadores não tem nenhuma outra ação atribuída. Se apenas uma ação for definida no mapeamento do teclado, ela será aplicada a todas as ações.
Eu brinquei tentando contornar isso, mas só obtive resultados inconsistentes. Às vezes, o modificador é lançado, às vezes não.
Esclarecimento
Alterar o Caps Lock para executar como escape ou como controle funciona muito bem com esse método. Mapeamento para ambos, não tanto.
IMPORTANTE
Se você estragar seu mapa de teclado, faça o seguinte para redefini-lo.
# loadkeys -d
Referências
- página de manual para loadkeys
- página de manual para showkey
- página de manual para dumpkeys
- veja os mapas padrão localizados em / usr / share / kbd