UMGUM.COM (лучше) 

Keyboard + Xmodmap + audio volume ( Настройка управления громкостью воспроизведения звука мультимедийными кнопками клавиатуры. )

15 января 2011  (обновлено 2 ноября 2014)

OS: Debian GNU/Linux Squeeze.

Завелась у меня простенькая клавиатура с двумя дополнительными мультимедийными клавишами. Имеются кнопки: "Звук громче" и "Звук тише". Раз есть функционал - следует его задействовать, благо любой вменяемый "оконный менеджер" готов отрабатывать глобальные события X-сервера.

Прежде всего удостоверимся, что установлены пакеты, содержащие утилиты, нам необходимые:

# aptitude install xserver-xorg-input-evdev x11-xserver-utils

В файле конфигурации X-сервера "/usr/share/X11/XKeysymDB" ищем наименования событий, наиболее подходящих нам по сути.


Выбираем следующие:

XF86AudioRaiseVolume
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
....

Для пробы, назначаем кодам клавиш соответствие событиям, которые будут генерироваться при нажатии на таковые:

# xmodmap -e "keycode 176 = XF86AudioRaiseVolume"
# 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
....

У меня, в KDE, уровень звука при этом уменьшается.

Далее, для автоматизации процесса применения дополненной конфигурации, следует создать пакетный файл для исполнения утилитой xmodmap:

# touch ~/.xmodmaprc

Приводим его содержимое к следующему виду:

# cat ~/.xmodmaprc

....
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


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )