У меня есть MacBook Pro под управлением Ubuntu 13.10 с FluxBox. К сожалению, кнопка питания физически находится над клавишей Backspace, где, как я ожидаю, должен находиться ключ удаления. В OS X программа PowerKey может использоваться для переназначения ключа питания для удаления. Как я могу сделать что-то подобное в X Windows?
Я отключил кнопку питания путем редактирования /etc/systemd/logind.conf
и настройки. HandlePowerKey = ignore
После этого я могу нажать кнопку питания, не выключая ноутбук.
Запуск xev -event keyboard
показывает, что KeyPress для клавиши питания обычно используется другим процессом:
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, чтобы использовать кнопку питания одновременно с обычным оконным менеджером?