Depois de trocar Ctrl e caps no xmodmap, como posso fazer o Ctrl funcionar corretamente para combinações de vários modificadores?

Depois de trocar Ctrl e caps no xmodmap, como posso fazer o Ctrl funcionar corretamente para combinações de vários modificadores?

Troquei Left Ctrle Caps Lockcriando ~/.Xmodmap

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

então correndo $ xmodmap ~/.Xmodmap. Pressionar a Left Ctrltecla funciona conforme o esperado, alternando Caps Lock. Pressionar a Caps Locktecla funciona em geral para atalhos simples, como Ctrl+N.

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

Posso redefinir o layout do teclado com $ setxkbmap -layout use o atalho acima funcionará bem. Se eu executar $ xmodmap ~/.Xmodmapnovamente, tenho o mesmo problema.

Também descobri que, mesmo para combinações de modificador único, tenho que manter pressionada a Caps Locktecla por uma fração de segundo a mais do que costumava fazer com a Ctrltecla vanilla para registrá-la. É provavelmente da ordem de 0,01 segundos, mas é perceptível o suficiente para que sinais incorretos sejam enviados uma em cada dez vezes.

Além disso, se eu trocar Ctrle Caps Lockusar $ setxkbmap -layout us -option 'ctrl:swapcaps', não percebo mais o problema com os vários modificadores. No entanto, ainda quero resolver o problema com a solução xmodmap, pois em breve receberei um novo teclado e precisarei trocá-lo Ctrlpor uma tecla diferente.

=EDITAR= Eu tentei outro teclado (Das Keyboard) e parece que o segundo problema de ter que segurar Caps Lockpor uma fração de segundo a mais do que fiz Ctrlé provavelmente um problema de hardware com o teclado original (um teclado de alumínio com fio da Apple) . No entanto, o primeiro problema com múltiplos modificadores ainda está presente.

=EDITAR= Eu testei diferentes pressionamentos de tecla no xev. Segurar Alte pressionar a Caps Locktecla resulta em keycode 66 (keysym 0x0, NoSymbol), ao contrário de keycode 66 (keysym 0xffe3, Control_L)quando Altnão é pressionada.

Responder1

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

keycode 66 = Control_L

deveria estar

keycode 66 = Control_L Control_L

para permitir a funcionalidade correta quando Ctrlpressionado após outro modificador. Não consigo encontrar boas referências para esta solução, masaparentementea segunda entrada está relacionada a Shift+ Key. Não sei por que aqui também parece se aplicar a Alt+ Key.

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

informação relacionada