trocando chaves em um terminal virtual

1

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?

    
por saga 28.11.2016 / 20:43

2 respostas

1

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 -
    
por 28.11.2016 / 22:24
2

Debian e 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.

systemd Linux

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. ☺

Leitura adicional

por 29.11.2016 / 14:39