Pull to refresh

Не работают мультимедийные клавиши под GNU/Linux? Нам поможет lirc.

Reading time2 min
Views1.4K
У меня мультимедийная клавиатура, и некоторые клавиши на ней не работают. Чтобы заставить их работать, есть руководство, но слишком уж там всё заморочено, поэтому я и связываться с этим не стал.
Тут надо сделать небольшое отступление:
Помимо клавиатуры у меня есть ещё и пульт ДУ. Так вот, наткнулся я как-то на строчку в логах Xorg:
(II) saa7134 IR (Avermedia AVerTV St: Configuring as keyboard

т.е. пульт воспринимается как клавиатура. И при этом цифровая клавиатура на пульте функционирует нормально без дополнительного ПО. Но так как остальные клавиши на пульте настраиваются через lirc, то возник вопрос: а можно ли неработающие клавиши на клавиатуре заставить работать через lirc? Оказалось можно! Более того, есть даже приложение, имеющее необходимые возможности: inputlircd. Вот цитата из man'а (переведена для «наглядности»):
inputlircd это небольшой LIRC-демон, который считывает из файлов (устройств) /dev/input/eventX и посылает полученные коды клавишь подсоединённым LIRC-клиентам.
inputlircd не нуждается в конфигурации, т.к. использует стандартнизированные имена для кодов клавишь, таких какие используеются в ядре. Многие USB пульты ДУ, предоставляющие HID-устройства, как и мультимедийные клавиатуры, должны работать прямо из коробки.
Иными словами, это как раз то, что нам надо :).
Замечание: настраивал я это всё под Gentoo.
Устанавливаем:

emerge -av inputlircd

Редактируем файл конфигурации:

vim /etc/conf.d/inputlircd

Прописывать в INPUTLIRCD_OPT можно несколько девайсов разделяя их пробелом. В моём случае получилось такое вот:

INPUTLIRCD_OPTS="/dev/input/by-path/pci-0000:02:08.0-event-ir /dev/input/event4"

По идее, лучше указывать by-path, т.к. номер события(ивента) может поменяться при добавлении/удалении устройства ввода. Но у меня, если указывать path для клавиатуры, то нужные мне клавиши не работали. Помимо этого, у меня для клавиатуры создаются два ивента (под номерами 3 и 4), а path один. И нужные клавиши работают только в случае event4.
Запускаем:

/etc/init.d/inputlircd start

Добавляем в автозапуск:

rc-update add inputlircd default

Теперь можно проверить работоспособность с помощью irw. Для этого просто запускаем эту утилиту в терминале:

irw

Пробуем мультимедийные клавиши и получаем в ответ что-то вроде такого:

1a2 0 KEY_ZOOMIN event4<br/>1a3 0 KEY_ZOOMOUT event4<br/>8c 0 KEY_CALC event4<br/>
Теперь необходимо создать/отредактировать файл ~/.lircrc. Для приведённых выше в примере клавишь можно добавить в этот файл следующие строки:
begin
<br/>    prog = irxevent
    button = KEY_ZOOMIN
    config = Key ctrl-plus CurrentWindow
end
begin
    prog = irxevent
    button = KEY_ZOOMOUT
    config = Key ctrl-minus CurrentWindow
end
begin
    prog = irexec
    button = KEY_CALC
    config = kcalc
end

В этом примере, клавишам KEY_ZOOMIN и KEY_ZOOMOUT назначаются комбинации Ctrl++ и Ctrl+-, принятые для увеличения и уменьшения соответственно. Передаются эти комбинации, как не трудно догадаться, текущему окну. Клавиша KEY_CALC назначается на запуск калькулятора.
Про irexec и irxevent можно почитать в man'ах или тут.
Таким образом, можно заставить работать любые мультимедийные клавиши.
Tags:
Hubs:
+5
Comments2

Articles