Como reativar a tecla caps lock?

12

Atualmente, estou configurando meu layout de teclado padrão como este:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

Desativa a tecla caps lock e a torna uma tecla ctrl adicional, juntamente com um enxame de outras opções.

Gostaria de fazer o seguinte para alternar os layouts de teclado:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

No entanto, não reativa a tecla caps lock; tanto a tecla de controle esquerda quanto a tecla caps lock permanecem como teclas de controle, tanto quanto eu posso ver.

Sei que posso limpar toda a lista de opções, mas, no interesse da manutenção, prefiro não copipar as opções. Como reativar o caps lock?

Atualização: Observando as teclas pressionadas com xev (1), aparece ctrl: nocaps fornece a Control_Lpara ambas as teclas e ctrl: swapcaps "restaura" a tecla caps lock (pressionar a tecla fornece Caps_Lock). No entanto, o LED caps lock não acende nem funciona.

Observar o xkeyboard-config/symbols/ctrlarquivo nas fontes do X.org sugere o problema:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

A última opção não possui uma linha modifier_map, o que quer que isso faça

hhaamu
fonte
Eu estou supondo que todos os que tentou me ajudar obtiveram seus teclados preso a Dvorak = (
hhaamu
4
X é tão antigo e complexo agora que muitas pessoas realmente não entendem os vários mecanismos internos. Há até seções na página do manual que dizem (e cito): " Ninguém quer dizer como isso funciona. Talvez ninguém saiba ... ". Estou interessado em ver uma resposta a esta questão tão bem, mas pode ser o caso de que ninguém sabe ...
jw013

Respostas:

14

Os seguintes comandos devem funcionar:

xmodmap -e 'keycode 0x42 = Caps_Lock'

ou

setxkbmap -option

Os comandos acima funcionam muito bem para restaurar o comportamento padrão, que quase nunca preciso, por sorte.

Normalmente refiro o capslock para Control (felizmente VI / VIM suporta CTRL-C em vez de ESC) com o seguinte comando:

setxkbmap -option ctrl:nocaps -layout gb
Alex
fonte
A opção "setxkbmap -option" para limpar as configurações é exatamente o que eu estava procurando. Continuei tentando mudar meu comportamento, mas ele continuava anexando itens conflitantes à lista de opções.
M0j0 13/06/2015
2

Tentar setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

Na página de manual:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

A ironia é que aqui -option ctrl:swapcapsrealmente se sobrepõe -option ctrl:nocaps- acho que o comportamento mudou.

Editar: Como o OP afirmou, ele deseja evitar a limpeza das opções (como feito da maneira acima).

/usr/share/X11/xkb/rules/xorg.lstmostra a opção ctrl:aa_ctrl(controle no canto inferior esquerdo), que parece redefinir o caps lock depois nocapsdaqui.

Eu acho que vale a pena tentar, e você também pode olhar para a lista ( grep ctrl\:) e ver se há algo mais que pode funcionar, caso este não funcione.

Se não houver opção para isso, acho que a solução é invadir o mapa de teclas atual, associando o Caps Lock à tecla Caps Lock novamente (mas não tenho experiência com isso, além de acreditar que existe uma ferramenta que permite que você faça isso com uma linha).

njsg
fonte
Isso de fato limpa a lista de opções, mas desejo manter as opções não relacionadas a maiúsculas (como afirmei na pergunta), como as teclas de composição.
Hhamam
Oh, desculpe, eu interpretei mal a pergunta. Não tenho certeza se isso funcionará (como afirmei, swapcapsna verdade reativa o caps lock aqui), mas a partir de /usr/share/X11/xkb/rules/xorg.lst, vejo que existe a opção ctrl:aa_ctrl(controle na parte inferior esquerda), que parece redefinir o caps lock depois nocapsdaqui.
njsg
Eu acho que o programa de magia é xmodmap, mas eu não tenho certeza de como usá-lo
hhaamu
0

existe uma opção "caps: capslock" (que mapeia a adição de "+ capslock (capslock)" a xkb_symbols) que ativa o capslock.

No entanto, essa opção (talvez todas as maiúsculas: xxxxx?) É adicionada antes das ctrl: xxxxx ones existentes; como ctrl: swapcaps redefine a tecla capslock, essa opção não tem efeito.

Portanto, você absolutamente precisa remover todas as opções e colocar as que deseja; da maneira que as opções existem, elas não devem desfazer a ação de uma anterior e, tendo opções conflitantes (por exemplo, duas (ou mais) que definem a mesma chave), não é possível definir a ordem delas.

Pablo Saratxaga
fonte