
Quando programo, gosto de trocar essas chaves:
Esc↔ Tab Ctrl↔CapsLock
Em ~/.xmodmap
, especifiquei estes remapeamentos:
keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab
As chaves Escape
and Tab
são trocadas, sem problemas, mas em vez de Caps_Lock
trocadas Control_L
, ambas as chaves se tornam Caps_Lock
.
O que quer que eu tente fazer, as teclas de controle não são atribuídas Caps_Lock
(código de acesso 66). Se eu deixar o keycode 66 =
, a chave não será atribuída, mas quando eu atribuir Control_L
ou Control_R
, ela simplesmente não funciona. Mas, se eu atribuir alguma outra chave, por exemplo, keycode 66 = Tab
ela será atribuída, sem problemas.
É como se o xmodmap simplesmente não quisesse que as teclas Caps Lock e Control fossem trocadas. Realmente frustrante. Qualquer ajuda/indicação seria realmente útil.
PS: Estou usando Archlinux.
Responder1
OPágina de manual xmodmap(1)tem um exemplo exatamente para isso
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
mas se você quiser terminar do jeito que começou, acho que você precisa adicionar pelo menos as linhas remove
eadd
remove Lock = Caps_Lock
remove Control = Control_L
keycode 37 = Caps_Lock
keycode 66 = Control_L
add Lock = Caps_Lock
add Control = Control_L
Suponho que seja esse o caso com base neste parágrafo
add MODIFIERNAME = KEYSYMNAME ...
This adds all keys containing the given keysyms to the indi‐
cated modifier map. The keysym names are evaluated after all
input expressions are read to make it easy to write expressions
to swap keys (see the EXAMPLES section).
o que faz parecer que as alterações do modificador (shift, control, etc.) não são aplicadas até que você execute isso também.
(E logicamente o mesmo com remove
)
A keycode
versão tem a vantagem de ser idempotente, o que significa que o efeito não mudará se o xmodmap for executado várias vezes.
Responder2
Resposta vagamente relacionada: eu queria remapear a tecla Caps Lock para o controle esquerdo, deixando o controle esquerdo real intacto. A página man do xmodmap também oferece a solução:
keycode 66 = Control_L
clear Lock
add Control = Control_L