Eu tenho um macbook pro executando o Ubuntu 13.10 com FluxBox. Infelizmente, o botão liga / desliga está fisicamente acima do backspace, onde eu esperaria que a chave de exclusão estivesse. No OS X, o programa PowerKey pode ser usado para remapear a tecla liga / desliga a ser excluída. Como posso fazer algo semelhante no X Windows?
Desativei a tecla liga /etc/systemd/logind.conf
/ desliga editando e configurando. HandlePowerKey = ignore
Depois disso, posso pressionar o botão liga / desliga sem desligar o laptop.
A execução xev -event keyboard
revela que o KeyPress da tecla liga / desliga normalmente está sendo consumido por outro processo:
MappingNotify event, serial 36, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeymapNotify event, serial 36, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeymapNotify event, serial 37, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
No entanto, executando apenas o xterm diretamente do console, consegui obter o código da chave e remapear a chave com êxito.
xinit /usr/bin/xterm -- :1
xev -event keyboard | tee /tmp/junk.txt
tail -n ???? /tmp/junk.txt
MappingNotify event, serial 28, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 28, synthetic NO, window 0x600001,
root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x600001,
root 0xa1, subw 0x0, time 720369, (146,89), root:(148,91),
state 0x0, keycode 124 (keysym 0x1008ff2a, XF86PowerOff), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 29, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
Nesse ponto, também era possível mapear a chave usando o xmodmap. Mapeei-o para a barra invertida, que é mais fácil de ver do que excluir:
xmodmap -e "keycode 124 = backslash bar"
Eu poderia obter um equivalente quase funcional para executar adicionando isso a, ~/.fluxbox/keys
mas isso é feio e lento o suficiente para ser inutilizável.
# Remap the power off to a delete key...
XF86PowerOff :Exec xdotool key Delete
Como posso usar xmodmap ou setxkbmap para usar o botão liga / desliga ao mesmo tempo que um gerenciador de janelas normal?