Como alterar o mapa de teclado do console no Linux?

32

Eu gostaria de trocar Esc e CapsLock no console (não no X e usar xev ), como posso fazer isso?

Meu sistema operacional é o Ubuntu.

    
por Vayn 29.05.2011 / 08:26

2 respostas

54

As ferramentas para manipular o layout do teclado nos consoles virtuais são loadkeys , dumpkeys e showkey . Leia as manpages e informe-se sobre as complexidades.

Observe que essas ferramentas funcionam apenas em um console virtual, não em um emulador de terminal em um ambiente gráfico como o gnome. O aprendizado sobre a diferença lê esta pergunta e respostas: .

Aqui está um pequeno guia para fazer o que você quer:

  1. Salvar seu layout de teclado atual:

    $ dumpkeys > backup.kmap
    

    Caso algo dê errado, você poderá restaurar seu mapa de teclado usando o comando:

    $ sudo loadkeys backup.kmap
    

    Se o teclado está tão bagunçado que você nem pode fazer isso, então sua única opção que não envolve a mágica antiga do kernel é reinicializar.

  2. Verifique quais códigos de teclas são atribuídos às suas chaves:

    $ showkey
    

    Agora pressione a tecla ESC e a tecla CAPSLOCK. Os códigos de teclas devem aparecer na tela. Observe os códigos de teclas. No meu sistema o ESC possui o keycode 1 e o CAPSLOCK possui o keycode 58. showkey terminará após 10 segundos de inatividade (pelo menos no meu Ubuntu 10.04).

  3. Anote os nomes das teclas ESC e CAPSLOCK das dumpkeys:

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. Observe a linha do mapa de teclado de dumpkeys:

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. Crie um arquivo de mapa de teclado que alterna ESC e CAPSLOCK:

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. Carregue o mapa de teclado:

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. Teste: testar a tecla CAPSLOCK é óbvio. Basta pressionar a tecla CAPSLOCK e verificar se outras teclas saem em maiúsculas. Para testar a tecla ESC, você pode usar CTRL + V seguido por ESC. Deve imprimir ^[ . CTRL + V faz o shell imprimir a próxima chave textual em vez de interpretá-la.

Para carregar essa modificação a cada reinicialização, coloque a seguinte linha no seu arquivo /etc/rc.local :

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

Informações coletadas de várias páginas, incluindo, mas não se limitando a:

por 29.05.2011 / 12:48
4

Use 'ctrl: nocaps' em vez de 'ctrl: swapcaps' se você quer apenas ter duas chaves de capslocks (capslock por outro nome ainda é super inútil).

X11: (veja também: /usr/share/X11/xkb/rules/base.lst )

sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm

Console de texto: (roubado do setupcon)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
    
por 21.05.2012 / 04:46