Активация странных кнопок ноутбука
Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.
Дано: старый ноут HP nc2400 с несколькими сенсорными кнопками на корпусе. Те, что регулируют звук, распознаются сами. Кнопка «i в кружочке» распознаётся как XF86Help, дальше её легко привязать средствами текущего DE. А вот кнопка «телевизор с ящиками» не распознаётся: xev просто молчит при её нажатии.
Требуется: (1) довести до XOrg информацию о существовании этой кнопки; (2) привязать её не к чему-нибудь, а к нажатию средней кнопки мыши, коей на ноуте нет.
Решение. Ядро получает от клавиатуры scancode (один или несколько) и превращает в keycode (универсальный «номер» клавиши). XOrg получает keycode (попутно почему-то прибавляя к нему 8) и сопоставляет его keysym («название» клавиши). Привязка идёт именно к keysym, но Xorg может просто не знать о наличии на клавиатуре выбранного типа клавиши с таким keycode, и вся цепочка рушится.
В консоли запускаем от root-а утилиту showkey, нажимаем на кнопку «телевизор с ящиками». Видим какой-то мутный keycode (у меня было 425). Вопреки ожиданиям, showkey -s отчего-о не хочет показывать скан-код этой кнопки. Ну и фиг с ним, getkeycodes выдаст полную таблицу, в ней будет 425, которое у меня соответствовало скан-коду e0 08. Переназначим его на какой-нибудь более разумный, например setkeycodes e008 135 (я всадил эту строчку в /etc/rc.d/rc.local). Теперь xev эту клавишу видит как XF86Paste, или 143 keycode.
Вписываем пользователю в ~/.xbindkeysrc следующее:
"xte 'mouseclick 2'"
m:0x0 + c:143Добавляем запуск xbindkeys в какую-нибудь автозагрузку.
Теперь по нажатии кнопки «телевизор с ящиками» будет нажиматься средняя кнопка мыши.
- 997 просмотров
Страница для печати

ещё xev забыл, setkeykodes только в консоле работает же
Да, вот действительно да, есть ноутбук с такими же "горячими" клавишами, но одни клавиши назначены каким то действиям, а какие то нет и жуть не хотят назначаться.
Сегодня буду мучать еще описанным методом.
Спасибо.
Иногда эти кнопки (1) вместо того, чтобы возвращать скан-код, порождают неведомое унылое ACPI-событие; или (2, на мультимедийных клавиатурах) вообще ничего не делают, пока не выполнишь неведомую противоестественную операцию с соответствующим USB-портом. Тогда ой.
Отправить комментарий