Altere caps-lock para controlar no console virtual no Ubuntu 17

10

Gostaria de alterar o comportamento do Caps Lock em terminais virtuais (por exemplo, tty CtrlAltF3) para que ele funcione como um modificador de controle. Idealmente, eu também gostaria que ele atuasse como Escape quando pressionado sozinho, mas apenas obter o comportamento de Controle está se mostrando difícil.

Estou executando o Ubuntu 17.04. Eu li e tentei várias abordagens para fazer essa alteração, mas nenhuma parece se aplicar ao meu sistema, conforme descrito. Tenho a sensação de que o systemd desempenha um papel nisso, mas os detalhes não são claros.

Eu escrevi um arquivo caps_control.kmap, que mapeia limites para controlar,

keymaps 0-255
keycode  58 = Control

Se eu correr loadkeys caps_control.kmapde um console virtual, ele funcionará. Agora eu gostaria que ele fosse carregado automaticamente durante a inicialização / login / o que for ...

Eu encontrei referências a usar /etc/rc.locala fazê-lo, mas meu sistema não tem esse arquivo, embora ele não tem vários diretórios gosto /etc/rc0.d/, /etc/rc1.d/...

Parece que, como o Ubuntu 17 usa o sytemd, devo usar localectlpara gerenciar esse tipo de coisa, mas não está claro para mim como fazê-lo. Por exemplo,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

A página de manual para localectlmenções /etc/locale.confe /etc/vconsole.conf, nenhuma das quais existe no meu sistema.

Estou totalmente perdido. Alguém pode me apontar na direção certa?

ivan
fonte
Você precisa que essa alteração esteja ativa para todos os usuários ou apenas para você?
Acer #
@acer De qualquer forma, seria bom para mim, pois sou realmente o único usuário nesta máquina.
ivan
Hmm ... Você adiciona uma linha em ~ / .profile com a loadkeys caps_control.kmapqual seria executada quando você efetuar login.
acer
Chamar @acer loadkeysde ~ / .profile parece ser problemático. Ao efetuar login, recebo um erro dizendo "Não foi possível obter um descritor de arquivo referente ao console".
ivan

Respostas:

11

Para transformar o Caps Lock em um modificador Ctrl adicional, que também é eficaz em tty consoles, abra /etc/default/keyboardpara edição e ajuste:

XKBOPTIONS=ctrl:nocaps

Se você já XKBOPTIONSconfigurou, acrescente ctrl:nocapsao valor existente usando uma vírgula para separador, por exemplo:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Deve ter efeito após a próxima reinicialização ou emissão do setupconcomando.

A opção deve estar presente ao executar localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

E na sessão X, outra maneira de verificar se está definida é:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']
Gunnar Hjalmarsson
fonte
1
outra opção XKB é "ctrl:nocaps". em X a diferença é sutil: com a ctrlopção, xeve outras ferramentas verão um Control_Lsímbolo quando a tecla CapsLock for pressionada, enquanto a capsopção ainda mostrará o Caps_Lockteclado. não tenho certeza se essa diferença se traduzirá no mapa de teclas do console virtual.
quixotesca
@ Quixotic: Obrigado por mencionar ctrl:nocaps. Eu adicionei à minha resposta.
Gunnar Hjalmarsson
Alguma idéia de por que isso não está funcionando para mim? Na verdade, é uma das primeiras coisas que tentei e gosto da abordagem. Infelizmente, isso não tem efeito no meu sistema.
ivan
1
@ivan: Acabei de me testar e descobri que minha primeira sugestão ( caps:ctrl_modifier) não é eficaz em tty. No entanto, para mim (em 17.10) ctrl:nocapsé. Por favor, veja minha resposta editada.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson eu não estou muito familiarizado com o método do debian / ubuntu de traduzir mapas XKB para mapas de console (envolve ckbcomp, eu acho?). não me lembrava da caps:ctrl_modifieropção mencionada pela primeira vez, então procurei comparar com a ctrl:nocapsque costumo usar e achei que a diferença poderia valer a pena mencionar aqui. feliz por ter sido útil.
quixotesca