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 us
e o atalho acima funcionará bem. Se eu executar $ xmodmap ~/.Xmodmap
novamente, 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.)