У мене є macbook pro під управлінням Ubuntu 13.10 з FluxBox. На жаль, кнопка живлення фізично знаходиться над задньою простором, де я б очікував, що ключ видалення буде ввімкнути . В OS X програму PowerKey можна використовувати для перестановки ключа живлення для видалення. Як я можу зробити щось подібне в X Windows?
Я відключив клавішу живлення, відредагувавши /etc/systemd/logind.conf
та встановивши. HandlePowerKey = ignore
Після цього я можу натиснути кнопку живлення, не вимикаючи ноутбук.
Запуск xev -event keyboard
виявляє, що клавіатура клавіші живлення зазвичай харчується іншим процесом:
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
Однак, запустивши лише xterm безпосередньо з консолі, я зміг успішно отримати код клавіші та перевстановити ключ.
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
У цей момент було також можливо зіставити ключ за допомогою xmodmap. Я відобразив його на куту косу рису, яку легше побачити, ніж видалити:
xmodmap -e "keycode 124 = backslash bar"
Я можу отримати ледве функціональний еквівалент для запуску, додавши це, ~/.fluxbox/keys
але це одночасно і некрасиво, і досить повільно, щоб бути непридатним.
# Remap the power off to a delete key...
XF86PowerOff :Exec xdotool key Delete
Як я можу використовувати xmodmap або setxkbmap для використання кнопки живлення одночасно зі звичайним менеджером вікон?