Respostas:
As ferramentas para manipular o layout do teclado nos consoles virtuais são loadkeys
, dumpkeys
e showkey
. Leia suas páginas de manual e informe-se sobre seus meandros.
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. Para aprender sobre a diferença, leia esta pergunta e respostas: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .
Aqui está um pequeno guia para fazer o que você deseja:
Salve seu layout de teclado atual:
$ dumpkeys > backup.kmap
Caso algo dê errado, você poderá restaurar seu mapa de teclas usando o comando:
$ sudo loadkeys backup.kmap
Se o teclado está tão bagunçado que você nem consegue fazer isso, sua única opção que não envolve a magia antiga do kernel é reiniciar.
Verifique quais códigos de chave estão atribuídos às suas chaves:
$ showkey
Agora pressione a tecla ESC e a tecla CAPSLOCK. Os códigos das teclas devem aparecer na tela. Observe os códigos de teclas. No meu sistema, o ESC possui o código de chave 1 e o CAPSLOCK possui o código de chave 58.showkey
terminará após 10 segundos de inatividade (pelo menos no ubuntu 10.04).
Observe os nomes das teclas ESC e CAPSLOCK das dumpkeys:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Observe a linha do mapa de teclas em dumpkeys:
$ dumpkeys | head -1
keymaps 0-127
Crie um arquivo de mapa de chaves que alterna ESC e CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Carregue o mapa de teclas:
$ sudo loadkeys swap_esc_capslock.kmap
Teste: o teste da chave CAPSLOCK é óbvio. Basta pressionar a tecla CAPSLOCK e verificar se outras teclas aparecem em maiúsculas. Para testar a tecla ESC, você pode usar CTRL + V seguido de ESC. Deve imprimir ^[
. CTRL + V faz com que o shell imprima a próxima chave literalmente, em vez de interpretá-la.
Para carregar essa modificação em cada reinicialização, coloque a seguinte linha no seu /etc/rc.local
arquivo:
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Informações coletadas de várias páginas, incluindo, entre outras:
/usr/bin/loadkeys
, /etc/rc.local
pois não é garantido que a variável de ambiente do caminho seja configurada neste estágio. E sudo
não é necessário rc.local
.
rc.local
executado sempre que o sistema é inicializado. @ bukzor de sudo setupcon
é não em rc.local
, é um comando de configuração única, que substitui o mapa de teclado padrão do sistema, sem acrescentar qualquer código de inicialização de tempo de execução. Adicionando loadkeys
a rc.local
, adiciona código de inicialização extra e duplica o que já foi feito pelas teclas de carregamento padrão do sistema. Na rc.local
verdade, o método pode ser menos seguro porque depende de um caminho não padrão para o mapa de teclas.
setupcon
método. Adicione sua própria resposta ou edite a minha, se desejar.
setupcon
. Parece que agosto fez a suposição de que o sudo setupcon --save
iria para rc.local
que eu não acho que é verdade, mas se isso acontecer, você não precisa sudo
de rc.local
. Acho que precisamos de mais informações antes de atualizar sua resposta. A questão principal é "Como instalar o mapa de teclas modificado para que ele seja carregado automaticamente durante o processo de inicialização?" Realmente não sei qual é a melhor maneira, rc.local
ou instalar um mapa de teclas, ou mesmo se a instalação de um mapa de teclas funcionará. Eu tenho pesquisado isso ultimamente e voltarei aqui.
Use 'ctrl: nocaps' em vez de 'ctrl: swapcaps' se você quiser apenas ter duas teclas de capslocks (capslock com 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
sudo setupcon --save
para tornar as alterações permanentes, em vez de editar o rc.local. Isso é essencialmente o mesmo quedumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz