Vamos começar com algumas explicações sobre o que está acontecendo e por que sua ideia não funciona. Primeiro, dê uma olhada no mapa de modificadores:
$ xmodmap
xmodmap: up to 3 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), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Como você pode ver, Num_Lock
é mod2
aqui. Quando está ativo, todos os eventos keypress vêm com mod2
bit on.
Se você desativá-lo assim:
$ xmodmap -e "keycode 77 = NoSymbol"
$ xmodmap
xmodmap: up to 3 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), Meta_L (0xcd)
mod2 BadKey (0x4d)
mod3
mod4 Super_L (0x85), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Observe que mod2
agora está associado a BadKey
e isso parece confundir muito o Xorg. Na verdade, a maioria das mudanças no mapa de modificadores parece quebrar o X11 para mim.
Neste momento, não consigo encontrar uma boa solução que envolva jogar com o mapa de modificadores. Mas eu tenho outra idéia: você pode mapear todas as teclas do teclado para funcionar da mesma forma com o num lock ligado e desligado. Isso é:
xmodmap -e "keysym KP_Up = KP_8"
xmodmap -e "keysym KP_Left = KP_4"
# ...
Depois de fazer isso, o estado do num lock não importará mais.
Você pode até remover o modificador depois para desligar o LED:
xmodmap -e "remove mod2 = Num_Lock"