Eu tenho um macbook pro rodando o Ubuntu 13.10 com o FluxBox. Infelizmente, o botão liga / desliga está fisicamente acima do backspace, onde eu esperaria que a chave delete estivesse. No OS X, o programa PowerKey pode ser usado para remapear a tecla liga / desliga para excluir. Como posso fazer algo semelhante no X Windows?
Eu desativei a tecla liga / desliga editando /etc/systemd/logind.conf
e definindo HandlePowerKey = ignore
Depois disso, posso pressionar o botão liga / desliga sem desligar o laptop.
A execução de xev -event keyboard
revela que o KeyPress da chave liga / desliga normalmente está sendo comido 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 de acesso 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
Neste ponto, também foi possível mapear a chave usando o xmodmap. Eu mapeei a barra invertida, que é mais fácil de ver do que excluir:
xmodmap -e "keycode 124 = backslash bar"
Eu poderia obter um equivalente mal-funcional para executar, adicionando isso a ~/.fluxbox/keys
, mas isso é tanto feio quanto lento o suficiente para ser inutilizável.
# Remap the power off to a delete key...
XF86PowerOff :Exec xdotool key Delete
Como posso usar o xmodmap ou o setxkbmap para usar o botão liga / desliga ao mesmo tempo que um gerenciador de janelas normal?