Завелась у меня простенькая клавиатура с двумя дополнительными мультимедийными клавишами. Имеются кнопки: "Звук громче" и "Звук тише". Раз есть функционал - следует его задействовать, благо любой вменяемый "оконный менеджер" готов отрабатывать глобальные события X-сервера.
Прежде всего удостоверимся, что установлены пакеты, содержащие утилиты, нам необходимые:
# aptitude install xserver-xorg-input-evdev x11-xserver-utils
В файле конфигурации X-сервера "/usr/share/X11/XKeysymDB" ищем наименования событий, наиболее подходящих нам по сути.
Выбираем следующие:
XF86AudioRaiseVolume
XF86AudioLowerVolume
XF86AudioLowerVolume
Отлавливаем коды, принимаемые X-сервером при нажатии на клавиши:
# xev
Пример вывода утилиты при нажатии на клавишу "Звук громче":
....
KeyPress event, serial 34, synthetic NO, window 0x3000001,
root 0x15a, subw 0x0, time 10583026, (-621,-292), root:(477,522),
state 0x10, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
....
KeyPress event, serial 34, synthetic NO, window 0x3000001,
root 0x15a, subw 0x0, time 10583026, (-621,-292), root:(477,522),
state 0x10, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
....
Для пробы, назначаем кодам клавиш соответствие событиям, которые будут генерироваться при нажатии на таковые:
# xmodmap -e "keycode 176 = XF86AudioRaiseVolume"
# xmodmap -e "keycode 174 = XF86AudioLowerVolume"
# xmodmap -e "keycode 174 = XF86AudioLowerVolume"
Теперь, при отлове утилитой xev, её вывод будет более полным, включая имя генерируемого события:
# xev
Пример, для нажатия на клавишу "Звук тише":
....
KeyRelease event, serial 34, synthetic NO, window 0x3200001,
root 0x15a, subw 0x0, time 12226109, (136,-38), root:(1234,776),
state 0x10, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
....
KeyRelease event, serial 34, synthetic NO, window 0x3200001,
root 0x15a, subw 0x0, time 12226109, (136,-38), root:(1234,776),
state 0x10, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
....
У меня, в KDE, уровень звука при этом уменьшается.
Далее, для автоматизации процесса применения дополненной конфигурации, следует создать пакетный файл для исполнения утилитой xmodmap:
# touch ~/.xmodmaprc
Приводим его содержимое к следующему виду:
# cat ~/.xmodmaprc
....
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
....
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
....
Создаём файл автозапуска, вместе с "оконным менеджером" совместимым со стандартом FreeDesktop, для утилиты xmodmap:
# touch ~/.config/autostart/xmodmap.desktop
Приводим его содержимое к следующему виду:
# cat ~/.config/autostart/xmodmap.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=xmodmap
Comment=xmodmap
TryExec=xmodmap
Exec=xmodmap ~/.xmodmaprc &
Icon=xmodmap
Version=1.0
Type=Application
Name=xmodmap
Comment=xmodmap
TryExec=xmodmap
Exec=xmodmap ~/.xmodmaprc &
Icon=xmodmap