xmodmap limpar modificador não está funcionando

3

Tentando entender o XKB e como personalizar os mapeamentos de teclado, especialmente para modificadores.

Um pequeno experimento sobre a desativação de modificadores leva a um resultado inesperado:

(1) Modificador mapeia antes

$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

(2) Modificador de bloqueio claro

$ xmodmap -e 'clear Lock'

(3) Limpo ok

$  xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Eu esperava desabilitar o CapsLock de definir o estado de bloqueio, mas isso não acontece. Ele funciona normalmente, e usando xev para ver os eventos de pressionamento de tecla, vejo que o sinalizador de bloqueio ainda muda ( state 0x0 quando o CapsLock está desativado, state 0x2 quando ativado).

O que está realmente fazendo o comando clear ?

Como posso desanexar chaves (códigos de teclas) para desativar suas funções como modificadores?

    
por mxlian 12.05.2015 / 12:26

1 resposta

2

Na verdade, a funcionalidade CapsLock está vinculada ao valor de keysym da tecla pressionada. Para ver o mapeamento de códigos de chaves para keyyms, execute xmodmap -pke . O mapeamento de CapsLock (código de acesso 66) deve ser ( | grep 'keycode 66' ):

keycode  66 = Caps_Lock NoSymbol Caps_Lock

Você pode brincar um pouco com xev . Leia mais em ArchWiki: Xmodmap # Introduction .

How can I detach keys(keycodes) to disable their function as modifiers?

Você precisa alterar o mapeamento de CapsLock .

  • Para desabilitar CapsLock , você precisa desmapear:

    xmodmap -e 'keycode  66 = NoSymbol NoSymbol NoSymbol'
    
  • Para ativar CapsLock , você precisa mapeá-lo novamente para os valores padrão:

    xmodmap -e 'keycode  66 = Caps_Lock NoSymbol Caps_Lock'
    

What is actually the clear command doing?

Limpa o mapeamento de um modificador, não o mapeamento de códigos de teclas. Mais em ArchWiki: Xmodmap # Modifier_keys

    
por 22.09.2015 / 11:27