Depois de trocar Ctrl e caps no xmodmap, como posso fazer Ctrl funcionar corretamente para combinações de multi-modificadores?

3

Troquei Ctrl da esquerda e Caps Lock criando ~ / .Xmodmap

keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock    = Caps_Lock
add Control = Control_L Control_R

executando $ xmodmap ~/.Xmodmap . Pressionando a tecla Ctrl esquerda funciona como esperado, alternando Caps Lock . Pressionar a tecla Caps Lock funciona em geral para atalhos simples, como Ctrl + N.

No entanto, quando várias teclas modificadoras são necessárias (por exemplo, Alt + Ctrl + I ), isso só funciona se eu pressionar o primeiro. Se eu pressionar a tecla Caps Lock primeiro, não haverá efeito.

Eu posso redefinir o layout do teclado com $ setxkbmap -layout us e o atalho acima funcionará bem. Se eu executar $ xmodmap ~/.Xmodmap novamente, tenho o mesmo problema.

Eu também acho que mesmo para combinações de modificadores únicos, eu tenho que segurar a tecla Caps Lock por uma fração de segundo a mais do que eu usei com a vanilla Ctrl chave para se registrar. É provavelmente da ordem de 0,01 segundo, mas é notável o suficiente que sinais incorretos estão sendo enviados um em dez vezes.

Além disso, se eu trocar Ctrl e Caps Lock usando $ setxkbmap -layout us -option 'ctrl:swapcaps' , não notarei mais o problema com os vários modificadores. No entanto, eu ainda quero resolver o problema com a solução xmodmap, já que estou adquirindo um novo teclado em breve, e precisarei trocar Ctrl por uma chave diferente.

= EDIT = Eu tentei outro teclado (Das Keyboard) e parece que o segundo problema de ter que segurar Caps Lock por uma fração de segundo a mais do que eu fiz com Ctrl é provavelmente um problema de hardware com o teclado original (um teclado com fio Apple Aluminum). No entanto, o primeiro problema com vários modificadores ainda está presente.

= EDIT = Eu testei diferentes pressionamentos de tecla no xev. Segurar Alt pressionando a tecla Caps Lock resulta em keycode 66 (keysym 0x0, NoSymbol) , ao contrário de keycode 66 (keysym 0xffe3, Control_L) quando Alt não é mantido.

    
por Sparhawk 04.04.2013 / 06:12

1 resposta

2

Aparentemente, o código xmodmap acima é não suficiente para trocar as teclas Ctrl + L e Caps Lock .

keycode 66 = Control_L

deve ser

keycode 66 = Control_L Control_L

para permitir a funcionalidade correta quando Ctrl é pressionado após outro modificador. Não consigo encontrar boas referências a esta solução, mas aparentemente a segunda entrada diz respeito a + Chave . Não tenho certeza porque aqui também parece aplicar-se a Alt + Chave .

(Além disso, FWIW, outras fontes afirmam que existem até oito colunas, em vez das seis mencionadas no link.)

    
por Sparhawk 07.04.2013 / 02:14