Я установил оконный менеджер i3 вместе с рабочим столом GNOME на Ubuntu-GNOME 16.04. У меня проблемы с настройкой мультимедийных клавиш на клавиатуре Logitech G610.
В моем файле ~/.config/i3/config
:
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
и подтвердили, что эти команды работают в терминале. Проблема, которую я вижу, состоит в том, что события нажатия клавиши XF86AudioRaiseVolume
т.д. Не регистрируются.
Если я использую xev -event keyboard
чтобы попытаться увидеть коды клавиш, при нажатии клавиш мультимедиа все, что я получаю, это следующее:
MappingNotify event, serial 30, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeymapNotify event, serial 31, 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
и не сообщается ни о каком коде ключа, как о других ключах. Однако, используя sudo showkey -k
, я получаю следующие ожидаемые значения:
keycode 113 press
keycode 113 release
keycode 115 press
keycode 115 release
keycode 114 press
keycode 114 release
xinput
, я вижу следующее
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech MX Master id=12 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=15 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Logitech Gaming Keyboard G610 id=10 [slave keyboard (3)]
↳ Logitech Gaming Keyboard G610 id=11 [slave keyboard (3)]
↳ Dell WMI hotkeys id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ DELL Wireless hotkeys id=17 [slave keyboard (3)]
где клавиатура Logitech отображается как два устройства. Запуск xinput list-props 10
и xinput list-props 11
Я вижу, что первый список отображается на /dev/input/event8
, а второй - на /dev/input/event9
.
Если я запускаю xinput test 10
я вижу, что первый список для моей клавиатуры реагирует на все обычные клавиши клавиатуры, но не на клавиши мультимедиа, в то время xinput test 11
реагирует только на клавиши мультимедиа:
key press 121
key release 121
key press 123
key release 123
key press 122
key release 122
(Они отключены на 8 из вывода showkey
, но, видимо, это ожидаемо. Кроме того, эти значения соответствуют выводу сопоставления с помощью xmodmap -pke
, то есть keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
). Запуск sudo evtest /dev/input/event8
и sudo evtest /dev/input/event9
дают аналогичные результаты.
Итак, мое понимание процесса между нажатием клавиши и обработкой довольно размыто, но, возможно, тот факт, что обычные клавиши и клавиши мультимедиа находятся на разных устройствах ввода, не позволяет событиям нажатия клавиши мультимедиа проходить в сеанс X (как свидетельствует не появившись на xev
?) и, следовательно, не получить до i3? Это отлично работает для рабочего стола GNOME, так что мне нужно что-то настроить, чтобы они работали на i3? Я в растерянности из-за того, как действовать отсюда, любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ
Первоначально у меня были кавычки вокруг команд в моем файле ~/.config/i3/config
, но это не работает. Я отредактировал выше, чтобы исправить это, но это не было корнем проблемы.