Use loadkeys
.
Para trocar Esc e Caps Lock no console, execute
printf 'keycode 1 = Caps_Lock Caps_Lock\nkeycode 58 = Escape Escape\n' | sudo loadkeys -
Nota: Eu fiz essa pergunta no superusuário há cerca de um mês, mas não houve uma resposta até então, e a questão está relacionada ao Linux, então estou postando aqui.
Eu quero trocar as teclas esc e caps_lock no meu teclado. setxkbmap -option caps:swapescape
faz o trabalho, mas apenas para X. As chaves se comportam de maneira original em um console virtual. Como posso fazê-los se comportar da maneira necessária em um vc?
Use loadkeys
.
Para trocar Esc e Caps Lock no console, execute
printf 'keycode 1 = Caps_Lock Caps_Lock\nkeycode 58 = Escape Escape\n' | sudo loadkeys -
console-setup
No Debian Linux e Debian FreeBSD, o design é para o servidor X e os terminais virtuais do kernel compartilharem um conjunto de informações de configuração. O pacote console-setup
fornece ferramentas e scripts de inicialização que usam a configuração de teclado / fonte do servidor X, convertem e usam para configurar os terminais virtuais do kernel.
Especificamente: O serviço console-setup
chama o comando setupcon --save
, que gera scripts em /etc/console-setup
contendo o teclado convertido e instruções de configuração de fonte, que são executadas nos dispositivos terminais virtuais do kernel pelas regras do udev. O mapa do teclado é convertido de XKB para loadkeys
format por ckbcomp
e o script gerado chamado da regra do udev é executado loadkeys
.
Portanto, no Debian Linux e no Debian FreeBSD você precisa garantir que as variáveis XKBMODEL
, XKBLAYOUT
, XKBVARIANT
, XKBOPTIONS
estão definidas corretamente em /etc/default/keyboard
. No seu caso, em particular, você precisa garantir que a variável XKBOPTIONS
tenha caps:swapescape
. Então você precisa garantir que tenha o pacote console-setup
instalado corretamente.
Nos sistemas operacionais systemd, as coisas são um pouco menos integradas do que no Debian. Existe um arquivo de configuração chamado /etc/vconsole.conf
e um serviço chamado systemd-vconsole-setup.service
que o processa na inicialização do sistema (em resposta a uma regra do udev que anuncia a existência do subsistema terminal virtual do kernel). Mas isso não está relacionado à configuração do servidor X.
O arquivo vconsole.conf
tem uma configuração de KEYMAP
indicando o mapa do teclado que é passado para loadkeys
, que, novamente, não é necessário executar explicitamente a si mesmo. Mas sobra tudo a você para criar um mapa de teclado (personalizado) que troca Caps Lock e Escape e coloca onde loadkeys
pode encontrá-lo.
Para obter mais configurações, é necessário envolver outros dois serviços, systemd-localed
e o Desktop Bus. Um corre, digamos,
localectl set-x11-keymap pl pc105 "" "caps:swapescape"e o serviço D-BUS do código do idioma vai e reescreve
/etc/vconsole.conf
com seu melhor palpite quanto ao mapa equivalente mais próximo para o terminal virtual do kernel. Este equivalente mais próximo pode não ser exatamente equivalente, e você pode achar que é simplesmente ignorar opções e coisas do tipo.
Naturalmente, você sempre pode alternativamente usar o ckbcomp
do Debian manualmente para converter diretamente um mapa de teclado XKB. ☺
systemd-vconsole-setup-service
. páginas de manual do systemd. Freedesktop.org. vconsole.conf
. páginas de manual do systemd. Freedesktop.org. localectl
. páginas de manual do systemd. Freedesktop.org.