Mam MacBooka Pro z systemem Ubuntu 13.10 z FluxBox. Niestety przycisk zasilania znajduje się fizycznie nad backspace, w którym spodziewałbym się, że znajduje się w nim klawisz usuwania. W OS X można użyć programu PowerKey do zmiany mapowania przycisku zasilania w celu usunięcia. Jak mogę zrobić coś podobnego w X Windows?
Wyłączyłem klawisz zasilania, edytując /etc/systemd/logind.conf
i ustawiając. HandlePowerKey = ignore
Następnie mogę nacisnąć przycisk zasilania bez wyłączania laptopa.
Uruchomienie xev -event keyboard
ujawnia, że KeyPress dla klawisza zasilania jest zwykle spożywany przez inny proces:
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
Jednak uruchamiając tylko xterm bezpośrednio z konsoli, udało mi się uzyskać kod dostępu i ponownie przypisać klucz.
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
W tym momencie możliwe było również zmapowanie klucza za pomocą xmodmap. Odwzorowałem go na odwrotny ukośnik, który jest łatwiejszy do zauważenia niż usunięcie:
xmodmap -e "keycode 124 = backslash bar"
Mogłem uzyskać ledwo funkcjonalny odpowiednik do uruchomienia, dodając to, ~/.fluxbox/keys
ale jest to zarówno brzydkie, jak i powolne, aby było bezużyteczne.
# Remap the power off to a delete key...
XF86PowerOff :Exec xdotool key Delete
Jak mogę użyć xmodmap lub setxkbmap, aby używać przycisku zasilania w tym samym czasie, co zwykły menedżer okien?