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

Изображение пользователя gadyuka.

В интернете полным-полно статей на эту тему, однако мне пришлось столкнуться с некоторыми тонкостями, поэтому я рискнула написать свою.
Итак, я обзавелась красоткой Genius ErgoMedia 700 с аж 36-ю дополнительными кнопками, но сразу на ней заработало только колесо прокрутки, и то только потому, что оно посылало те же кей-коды, что и стрелки.

1. Узнаем, какие кнопки система не видит.

Пишем в консоли xev и начинаем нажимать дополнительные кнопки (стараясь при этом не шевелить мышкой, потому что ее движения тоже отслеживаются). Если на каждое нажатие хоть что-то выводится, вам повезло. А если вы найдете модель своей клавиатуры в одной из таких программ, как hotkeys, keytouch, lineakd (есть в репозиториях) или sven (надо скачивать и собирать) - вам повезло вдойне, дальше можно настраивать с их помощью в красивых гуях. Если не повезло и на некоторые клавиши xev не реагирует, переходим к шагу 2.

2. Привязываем скан-коды.

Пишем в консоли dmesg и внимательно смотрим. В выводе должны быть строчки вида: [17183435.892000] atkbd.c: Unknown key pressed (translated set 2, code 0xa8 on isa0060/serio0).
[17183435.892000] atkbd.c: Use 'setkeycodes e028 <keycode>' to make it known.
Если даже dmesg ничего не пишет о ваших кнопках, тут я могу лишь посоветовать переткнуть клавиатуру из USB в PS/2 (у Genius переходник был в комплекте). У меня через USB половина дополнительных кнопок не виделась вообще, а половина посылала какие-то невероятные скан-коды, которые setkeycodes отказывалась назначать.

Вооружаемся бумажкой и ручкой и переписываем скан-коды, на которые ругается ядро (запоминать, к каким клавишам они относятся, не стоит - все равно не пригодится). В моем примере это e028. Теперь нужно узнать, какие кей-коды свободны. Для этого пишем например sudo getkeycodes|grep 215 (число в десятичной записи, желательно между 128 и 256). Если ничего не выводится, значит кей-код не занят. Но не торопитесь писать по совету ядра setkeycodes e028 215. Это назначение будет работать до первого рестарта, поэтому нужно озаботиться каким-нибудь загрузочным скриптом. Я выбрала /etc/rc.local (поправьте меня, если это не кошерно), получилось следующее:#!/bin/sh -e
exec sudo setkeycodes e025 220 &
exec sudo setkeycodes e02f 221 &
...
exec sudo setkeycodes e023 239 &
exit 0

3. Присваиваем кнопкам имена.

Итак, после запуска скрипта xev должен увидеть все кнопки. Кстати, обратите внимание, что кей-коды, выводимые xev, не совпадают с теми, что мы писали в setkeycodes. Где-то написано, что это баг, где-то - что это фича, но не суть важно. Снова вооружаемся бумажкой и ручкой, но теперь отмечаем, к каким именно кнопкам это относится. Вывод xev выглядит примерно так: KeyRelease event, serial 31, synthetic NO, window 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
state 0x0, keycode 161 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Нам интересны те кнопки, которые названы NoSymbol. Или же кнопка XF86Mail, совсем не являющаяся Mail - ее стоит переименовать. Переписываем их кей-коды.
Нам понадобится утилита xmodmap (из пакета x11-xserver-utils). В домашней директории создаем (или редактируем) файл .Xmodmap примерно следующего содержания: keycode 129=XF86AudioMedia
keycode 148=XF86Music
keycode 202=XF86Pictures
keycode 101=XF86Documents
Числа - переписаные из вывода xev кей-коды. А возможные имена нужно подсмотреть в конце файла /usr/share/X11/XKeysymDB. В принципе видно, что все они строятся одинаково: префикс XF86 и осмысленное название. Не забываем добавить xmodmap в автозагрузку.

4. Назначаем действия.

В принципе после команды xmodmap .Xmodmap можно настраивать действия кнопок KDE-шными средствами. Многие программы, например Dolphin, Amarok, Kmix имеют в меню пункт Комбинации клавиш, где сами отлавливают нажатия. Можно воспользоваться маленькой программкой xbindkeys из репозиториев, которая ассоциирует комбинации клавиш с консольными командами. Ее настроечный файл ~/.xbindkeysrc также имеет простейший синтаксис и состоит из блоков вида:"konsole"
XF86Book
Соответственно в кавычках команда, в следующей строке клавиша или комбинация. Однако я рекомендую воспользоваться xbindkeys-config, которая сама отлавливает нажатия и позволяет проверить работу команд. Почему-то она отлавливала мои дополнительные кнопки как Mod2+XF86Book, а без Mod2 не работала. Теперь можем с садистским удовольствием назначить на кнопки Power Point, Excel и Word соответственно konsole, ksysguard и xkill :) xbindkeys -f .xbindkeysrc в автозагрузку.

5. Для пользователей Opera.

И не только, возможно для некоторых других браузеров это тоже верно. Повесить на кнопки WWW и Search команды opera и opera yandex.ru несложно, а вот с кнопками навигации, а также Mail и Favorites не все так просто. Если пойти в Инструменты-Настройки-Дополнительно-Управление-Профили клавиатуры, то можно убедиться, что опера нажатия отлавливать не умеет и названия типа XF86Forwad и XF86Back не понимает. Много где написано, что это до сих пор не исправленный баг, однако не расстраивайтесь - все возможно! После мучительной, но победоносной войны было выяснено, что достаточно в .Xmodmap назначить этим кнопкам не заковыристые имена, начинающиеся на XF86, а простые F19, F20 и так далее! Их-то опера поймет :)

Все, можете поздравить себя с победой! А у меня еще 6 кнопок, для которых нужно придумать действие...

Комментарии (34)

0
mityukov - 16 Март, 2009 - 18:38
Изображение пользователя mityukov.

Настраивал когда-то таким-же способом, и тоже писал статью "по русски", но только не тут, а на forum.ubuntu.ru

У тебя писать получается лучше и понятнее! ;-)

В Intrepid же, MMedia клавиши каким-то чудом подцепились автоматом (хотя моей модели и нет в диалоге настройки параметров раскладки или что-то типа этого -- там так и стоит какая-то из "Standard").

Остался один маленький нюанс: как врубать Led подсветку на доп. клавишах? В винде я качал спец. драйвер с сайта HP - подсветка заработала только с ним. В *nix не имею понятия откуда начинать копать вообще... Подозреваю, что надо отправить какой-то спец. код на /dev/....

+1
buba - 18 Март, 2009 - 20:20
0
lordntym - 28 Март, 2009 - 23:01

после запуска xev высвечивается окошко, жму клавиши, вывода не вижу, что я делаю не так?

0
picaro - 29 Март, 2009 - 18:55
Изображение пользователя picaro.

Вывод должен быть в консоле, откуда был запущен xev.

0
DarkneSS - 31 Март, 2009 - 16:56
Изображение пользователя DarkneSS.

Нашёл свою клавиатуру в keytouch, выбрал и радостно начал ОК, но разницы не заметил: клавиши, которые не работали раньше, и после этого не заработали. Гуглинг не помог... Может у кого-нибудь есть идеи?:)

0
gadyuka - 31 Март, 2009 - 17:10
Изображение пользователя gadyuka.

Видимо, если их не видел xev, то шаманство с dmesg и setkeycodes все-таки нужно творить.

0
Гость - 7 Апрель, 2009 - 00:59

(!) Уважаемые жители и гости нашего форума, не злоупотребляйте сверх цитированием. Вставляйте только важные и относящиеся к теме куски. В крайнем случае прикрепляйте текстовым файлом.(!)

У меня тоже Genius ErgoMedia 700. А проблема в том, что некоторые доп. клавиши выполняют сразу несколько команд. Например, клавиша почтового менеджера включает: калькулятор, мультимедиа проигрыватель, поисковик Traker и браузер (почта не запускается). И так "глючит" не только эта кнопка.
Пробовал hotkeys, keytouch, lineakd. В keytouch, lineakd эгромедии нет, в hotkeys, при назначении того же клиента эл. почты "высыпаются" все ранее обозначенные мной приложения, а в окне программы, в комбинации клавиш появляется почему-то Alt+O.
Набирал в консоли dmesg, получал приблизительно такую картину:

[skip]

В общем, меня это всё вводит в тихий ужас, чего делать просто не знаю!

+2
gadyuka - 7 Апрель, 2009 - 14:35
Изображение пользователя gadyuka.

ох майн гатт!
Хоткеи тут действительно не помогут.
1. Не пугаем модераторов, пишем вывод dmesg|grep setkeycodes Если ничего не вывелось, значит нужных нам строк нет.
2. Куда воткнута клавиатура, usb или ps/2? Советую последнее, переходник в комплекте. Потом снова тыкаем в кнопки и смотрим dmesg.
3. Все ли клавиши видит xev?
Имхо, эту путаницу можно исправить с помощью xmodmap и xbindkeys.

+2
balamutick - 7 Апрель, 2009 - 14:49
Изображение пользователя balamutick.

Как вариант dmesg > my_dmesg.txt и прикрепить внизу страницы.

0
Voyageur - 12 Апрель, 2009 - 00:10
Изображение пользователя Voyageur.

Такой вопрос: у меня ноутбук в наличии, у него есть мультимедийные кнопки, изначально призванные обслуживать мультимедиаплеер в винде. Есть кнопки Play, Stop, Back, Forward. Когда я их тестирую в xev, то вот что получается (пример только для первой кнопки):
ButtonPress event, serial 34, synthetic NO, window 0x4600001,
    root 0x13c, subw 0x0, time 19498636, (2,9), root:(790,567),
    state 0x0, button 4, same_screen YES

ButtonRelease event, serial 34, synthetic NO, window 0x4600001,
    root 0x13c, subw 0x0, time 19498701, (2,9), root:(790,567),
    state 0x800, button 4, same_screen YES

То есть, нажатие этой кнопки эмулирует нажатие 4-ой кнопки мыши. Можно ли как-то направить эту мультимедиа панель в струю амарока?)))

0
gadyuka - 12 Апрель, 2009 - 01:54
Изображение пользователя gadyuka.

А средствами Амарока не получается? Настройки - Глобальные комбинации клавиш, и там потыкать?
Честно говоря я что-то не соображу как можно переназначить такие кнопки с мышиных на обычные... Разве что с помощью inwheel, см ссылку

0
Voyageur - 12 Апрель, 2009 - 09:41
Изображение пользователя Voyageur.

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

0
gadyuka - 12 Апрель, 2009 - 12:16
Изображение пользователя gadyuka.

Да, проблема. Честно говоря не знаю как разделить "слипшиеся" кнопки. dmesg конечно же на эту тему молчит?
У меня колесо клавиатуры видимо аппаратно имеет такие же сканкоды, как стрелки. А вот как клава может посылать то же, что и мышь...
Кстати, а дрова со стандартных на evdev менять не пробовали? У клавы или у мышки?

0
Voyageur - 12 Апрель, 2009 - 21:24
Изображение пользователя Voyageur.

dmesg - настоящий партизан! ;)
Мышь у меня как раз на evdev висит, ибо logitech с дополнительными кнопками. А вот клава - обычная-ноутбучная, есть тачпад, а также эти медиа-кнопки. Выходит, и у тачпада, и у этих медиа-кнопок тоже одинаковые сканкоды...
А нет ли каких дров на тачпад синаптиковских? В windows у меня за mediakeys отвечали именно они!

0
gadyuka - 14 Апрель, 2009 - 09:11
Изображение пользователя gadyuka.

Опаньки! А вот это уже интересно! То есть медиа-кнопки это дополнительные кнопки тачпада что ли...
Хм, я в списке нашла xserver-xorg-input-evtouch, может это оно? Кстати, клавиатуру тоже можно на evdev повесить.
P.S. Таки отпишитесь о результатах, интересно же!

0
Voyageur - 14 Апрель, 2009 - 10:12
Изображение пользователя Voyageur.

Вы знаете, толком не успел ничего попробовать, однако обратил внимание на то, что данный пакет предназначен не для тачпада, а для "touchscreens input devices". Это, наверное, все-таки не то. Также просмотрел установленные пакеты, обнаружил интересную вещь: установлен пакет драйверов synaptics для тачпада (по умоллчанию, наверное). Но xorg'e описание InputDevice "Touchpad (или как-то так)" закомментировано, я не трогал, возможно это было сделано автоматически. Я раскомментировал, в Section "ServerLayout" добавил
InputDevice "Touchpad" "CorePointer"
CorePointer дописал просто по аналогии с мышкой (потому как не разбирался, для чего оно надо). Перезапустил иксы, получился интересный эффект - курсор остается на месте (именно его картинка), но на самом деле двигается - сужу по тому, что выделяются кнопки, ссылки и т.д. Но самое главное для меня было в этом эксперименте то, что мультимедиа кнопки по-прежнему работают в режиме кнопок прокрутки мыши/тачпада, то есть ничего не поменялось...
Вот, собственно, все, что я пока сделал; как это ни прискорбно, но не продвинулся нисколько((

0
febick - 20 Апрель, 2009 - 23:24
Изображение пользователя febick.

Статья в тему, как раз пытался разобраться с мультимедийными кнопками на ноуте) всё работает на ура) респект)

0
Voyageur - 21 Апрель, 2009 - 08:42
Изображение пользователя Voyageur.

А у вас какой ноут?))

0
febick - 15 Июль, 2009 - 21:00
Изображение пользователя febick.

Acer

0
Voyageur - 16 Июль, 2009 - 08:33
Изображение пользователя Voyageur.

Вот у меня тоже Acer (5920), мультимедийные клавиши (у меня есть правая боковая панель с кнопками play, pause...) работают, но не так как надо: они не исполняют предусмотренных функций, а играю роль мышки))

0
febick - 17 Июль, 2009 - 00:01
Изображение пользователя febick.

Ну так используй предложенный тут вариант с программой xbindkeys и назнач на них любые другие действия ;)

0
Гость - 3 Май, 2009 - 17:05

Помогите пожалуйста восстановить работу мультимедийных клавиш, они перестали работать после обновления с Hardy на Jaunty. Все кнопки работают(причём назначенные на них действия сохранились), кроме Play/Pause, Stop, Prev и Next.
Xev показывает имена этих кнопок верно (XF86AudioPlay, XF86AudioPrev...).
В Input Actions назначаю на них действия, принажатии кнопок соответствующие им имена прописываются там, но назначаемые команды не выполняются.

0
linuxevolution - 1 Сентябрь, 2009 - 22:07
Изображение пользователя linuxevolution.

Честно говоря, незнаю как у вас, но у меня все кнопки определились без всякого дополнительного ПО. Просто глобально себе понастраивал на нужные действия, и все.

0
Гость - 20 Январь, 2010 - 20:46

у меня такой вопрос.у меня на копе есть дополнительные кнопки для проигрователя на windows media они работают а на winampe нет скачивал пору драйверов точпад они не помогают помогите плизззз

+2
Xenomorph - 21 Январь, 2010 - 08:58
Изображение пользователя Xenomorph.

ололо, трололо! windows media,winampe
Тебе сюда.

0
SANYA1024 - 10 Февраль, 2010 - 01:59

У знакомого есть ноут ASUS M50Sr. Как настроить дополнительные фукции сенсорной панели и мультимедия проигрователя, не знаю. В драйвере тачпад(а), нужных функций (настроек) не обнаружил. Тут вычитал, что нужна какая-то консоль " xev ". Где ее взять? Или лучше подскажите, какое програмное (дополнительное) обеспечение нужно установить?

0
Гость - 1 Апрель, 2010 - 20:34

Такая же проблема как и у Александра, просьба помогите!!! =)

0
Romulas - 4 Июнь, 2010 - 11:28

Делал все по пункту 4. Захожу в автозагрузка, добавить скрипт(все равно он перекинет его в программы, а если сделать сразу программы то все равно не работает)перегружаюсь...... ничего. Работает только если запустить xbindkeys-config потом выбрать профиль(в "по умолчанию" не записывает), нажать Load появится все те команды что я программировал, закрыть xbindkeys-config и запустить xbindkeys. Тогда работает, но проделывать все это каждый раз после ребута %) не дело. Подскажите что не так делаю. А создать папку ~/.xbindkeysrc пришлось самому... И файлы перекидывать с ~/.xbindkeys_config/speed_c/ в ~/.xbindkeysrc вручную.

0
xandry - 8 Октябрь, 2011 - 19:25

Не могли бы вы дать ссылку на домашнюю страничку вышеупомянутой программы sven? Никак не могу найти эту программку.

0
DarkneSS - 8 Октябрь, 2011 - 19:43
Изображение пользователя DarkneSS.

=)

0
xandry - 8 Октябрь, 2011 - 20:06

Круто. Спасибо.

0
Гость - 8 Октябрь, 2011 - 19:46
0
dyug - 9 Октябрь, 2011 - 09:13

а шо воно ще живе? (с)укромовное.. :-)
Помню, я с ним игрался во времена слаки, оно почти работало, потом автор ушел в армию, и начало глохнуть...
гмм, стоит ли ее пробовать, не знаю: 29 сентября 2006 Новая версия : Sven-0.6

Ну это так, мое личное мнение, которое я никому не навязываю.. :-)

0
Гость - 24 Август, 2012 - 22:22

У меня клавиатура свен офис 7007 подключил клавиатуру работали кнопки пауза переход плей, но не работали остольные кнопки, установил драйвер на неё теперь всё на оборот стало... как настроить эти кнопки??7

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры