21 апреля 2007

Настройка мультимедийных кнопок в линуксе

Решил написать о том, как я настраивал мультимедийные кнопки в линуксе. Не зря же я мучался... может кому пригодится =)

Для начала подключаем клаву, затем проверяем на работоспособность, если все нормально, то читаем дальше, если нет настраиваем ядро.

Допустим клава у вас уже вполне рабочая, только мультимедиа кнопки пока не работают. Для начала нам нужно выяснить сканкод каждой мультимедиа кнопки. Делается это очень просто. Запускаем в консоли программу xev, активируем открывшееся окно, нажимаем одну из мультимедийных кнопок и смотрим что пишет xev в консоли. В моем случае, после нажатия навигационной кнопки назад, я получил следующую информацию:

KeyPress event, serial 32, synthetic NO, window 0x3000001,
root 0xa3, subw 0x0, time 361090195, (895,-105), root:(1187,115),
state 0x10, keycode 234 (keysym 0x1008ff26, XF86Back), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

Все что нам тут нужно это keycode, который в данном случае 234. Как вы видите дальше там же прописана и фунция XF86Back. В вашем случае скорее всего там ничего стоять не будет и задачей как раз и является прописать нужные функции к каждой кнопке. Для этого я нажал все кнопки и записал их сканкоды на лист бумаги, например так:
234 = Back
итд.
теперь переходим к самому интересному ;)
в консоли вводим следующую команду:
xmodmap -pke > .xmodmap.conf
данная команда сохраняет вашу активную конфигурацию в файл .xmodmap.conf
Теперь нужно прописать все ваши кнопки, но для того чтобы это сделать нужно знать названия кнопок. Переходим сюда и выбираем нужное имя, открываем сохраненный файл .xmodmap.conf, доходим до нужного номера и рядом с ним прописываем нужное имя. В случае с клавишей XF86Back со сканкодом 234 это выглядит следующим образом:
keycode 234 = XF86Back

После того, как вы прописали все ваши мультимедиа кнопки, сохраняем файл и загружаем сохраненный файл с помощью команды
xmodmap .xmodmap.conf
Теперь нужно сделать так, чтобы эти кнопки работали при каждом старте системы. Далее я буду описывать как это сделать для кед, если вы используете другой оконный менеджер, то установки могут быть несколько иными.
Для начала создаем файл в вашей домашней папке в поддиректории .kde/Autostart под названием, например xmodmap и прописываем в него следующее:
#!/bin/sh
/usr/bin/xmodmap ~/.xmodmap.conf

далее делаем его исполняемым:
chmod +x .kde/Autostart/xmodmap
и все! теперь осталось самое простое - прописать каждой кнопке нужный вам экшн.
Далее я опишу, как сделать чтобы при нажатии кнопки XF86PlayPause у вас загружался Amarok и начинал "петь", а если он загружен, то включалась бы пауза, если что-то проигрывается, или если уже стоит на паузе продолжалось проигрывание.
Для этого заходим в кедах в центр управления в категорию "Регинальные и специальные возможности", и там в на "Ввод", создаем свою группу, которую называем, например, AmaroK. В новой группе создаем действие, которое называем, например "AmaroK Start Play Pause", выбираем тип действия "Общие", в закладке "Активаторы" создаем с помощью меню "Активация комбинацией клавиш..." новую запись, и при запросе нажимаем нужную нам кнопку, например ту же XF86playPause. Далее в "Действиях" добавляем запись с помощью пункта меню "Создать" -> "Команда/URL..." и как команду прописываем путь к амароку, в моем случае это было: /usr/bin/amarok
Далее добавляем еще одну запись в том же меню, но на этот раз выбираем пункт "Вызов DCOP...". В открывшемся окне в поле "Удаленное приложение" пишем amarok, в поле удаленный объект пишем player, в поле вызванная функция вписываем playPause(), нажимаем на ОК, в окне центра управления нажимаем на применить и ... УРА! РАБОТАЕТ!!! по-крайней мере у меня =)

Если у вас возникли сложности или вопросы - пишите! Всегда постараюсь помочь, разумеется, по мере сил и возможностей! =)))

Комментариев нет: