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.