ИК-пульт - некоторые медиа-ключи не будут работать (KEY_NEXTSONG / KEY_PREVIOUSSONG)
Я прочитал много текстов, чтобы зайти так далеко:) После обновления 17.04 LIRC больше не работал с моим NUC7i5... поэтому я узнал об использовании ir-keytable. ( Этот пост мне очень помог!)
Поэтому после удаления LIRC моя таблица ключей выглядит так (интересно, что протокол lirc все еще включен):
sudo ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event6) with:
Driver ite-cir, table rc-rc6-mce
Supported protocols: unknown other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
Enabled protocols: lirc
Name: ITE8708 CIR transceiver
bus: 25, vendor/product: 1283:0000, version: 0x0000
Repeat delay = 500 ms, repeat period = 125 ms
Затем я обнаружил, что мой старый пульт Mac работает по NEC-протоколу, поэтому я создал свой собственный rc_keymaps и активировал NEC-протокол следующим образом:
cp /lib/udev/rc_keymaps/nec_terratec_cinergy_xs /etc/rc_keymaps/nec_mac
sudo ir-keytable -p nec
Теперь я могу запустить ir-keytable-test, чтобы увидеть коды сканирования удаленных ключей:
sudo ir-keytable -t
Testing events. Please, press CTRL-C to abort.
1504134142.373150: event type EV_MSC(0x04): scancode = 0x77e15025
1504134142.373150: event type EV_SYN(0x00).
1504134143.213712: event type EV_MSC(0x04): scancode = 0x77e13025
1504134143.213712: event type EV_SYN(0x00).
1504134143.935559: event type EV_MSC(0x04): scancode = 0x77e16025
1504134143.935559: event type EV_SYN(0x00).
1504134145.042733: event type EV_MSC(0x04): scancode = 0x77e19025
1504134145.042733: event type EV_SYN(0x00).
1504134145.844078: event type EV_MSC(0x04): scancode = 0x77e1a025
1504134145.844078: event type EV_SYN(0x00).
Эти коды сканирования были полезны для изменения скопированного файла карты-ключа:
sudo nano /etc/rc_keymaps/nec_mac
Результат этой модификации выглядит так:
cat /etc/rc_keymaps/nec_mac
# table nec_mac type: NEC
0x77e15025 KEY_VOLUMEUP
0x77e13025 KEY_VOLUMEDOWN
0x77e1a025 KEY_PLAYPAUSE
0x77e19025 KEY_PREVIOUSSONG
0x77e16025 KEY_NEXTSONG
После очистки старой таблицы ключей от ir-keytable и загрузки нового файла rc_keymaps nec_mac, пульт работал частично в 17.04 и в Rhythmbox (у меня есть эти команды в моем rc.local для активации таблиц ключей при запуске):
sudo ir-keytable -c
sudo ir-keytable -p nec -w /erc/rc_keymaps/nec_mac
Но две кнопки не работают: KEY_PREVIOUSSONG и KEY_NEXTSONG. У меня есть беспроводная клавиатура Logitech (k830, с USB-приемником)... здесь все медиа-клавиши работают с Rythmbox. И если я попробую sudo showkey
команды и я нажимаю на клавиатуру KEY_NEXTSONG и ИК-пульт дистанционного управления KEY_NEXTSONG, я получаю тот же код ключа:
keycode 163 press
keycode 163 release
Если я попытаюсь установить LIRC снова после всех этих конфигураций, либо ИК-пульт больше не работает, либо он входит в какой-то "бесконечный цикл" (например, нажав один раз KEY_VOLUMEUP, и он поднимется до упора).
Итак, у кого-нибудь есть идеи, как работать с таблицей ir-ключей без LIRC, чтобы эти два ключа работали в ритмбоксе?
Моя версия ядра должна быть up2date: 4.10.0-33-generic
Спасибо за каждый намек.
1 ответ
У меня есть 4.4.0-generic, работающий на Macbook Pro (2011) с пультом Apple, и у меня была такая же проблема. Сначала фон, как я это исправил:
Фон:
Мое ядро - установленное с Mint 18.1 на основе Ubuntu 16.4, более старое, чем ваше, - распознает пульт, прежде чем я что-либо установил. Увеличение громкости, уменьшение громкости, воспроизведение / пауза работают так же, как клавиши клавиатуры, следующий трек и предыдущий трек не сделали. Я переустановил пакет lirc и отредактировал в спецификации mac mini для пульта. Без изменений. Запустив irw, я вижу, что ядро распознает пульт и создает событие для каждой кнопки.
Некоторые люди упоминали, что более новое ядро просто не работало с пультом, как старое, отказывалось или откатывалось к более раннему ядру, но вот что я сделал.
Исправляя это:
Я установил евтест пакет
$ sudo apt install evtest
Побежал евтест. Программа дает вам список каждого устройства ввода и c. Выберите номер для пульта и нажмите ввод. На моем ноутбуке список включен
/dev/input/event6: Apple Computer, Inc. IR Receiver
/dev/input/event7: Apple Inc. Apple Internal Keyboard / Trackpad
поэтому, чтобы увидеть пульт Apple, я печатаю 6.
$ sudo evtest
Select the device event number [0-16]: 6
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x5ac product 0x8242 version 0x111
Input device name: "Apple Computer, Inc. IR Receiver"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 28 (KEY_ENTER)
Event code 114 (KEY_VOLUMEDOWN)
Event code 115 (KEY_VOLUMEUP)
Event code 139 (KEY_MENU)
Event code 158 (KEY_BACK)
Event code 159 (KEY_FORWARD)
Event code 164 (KEY_PLAYPAUSE)
Key repeat handling:
Repeat type 20 (EV_REP)
Repeat code 0 (REP_DELAY)
Value 250
Repeat code 1 (REP_PERIOD)
Value 33
Properties:
Testing ... (interrupt to exit)
Event: time 1509552582.912009, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1509552582.912009, -------------- SYN_REPORT ------------
Event: time 1509552583.034614, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1509552583.034614, -------------- SYN_REPORT ------------
Event: time 1509552586.159731, type 1 (EV_KEY), code 159 (KEY_FORWARD), value 1
Event: time 1509552586.159731, -------------- SYN_REPORT ------------
Event: time 1509552586.338556, type 1 (EV_KEY), code 159 (KEY_FORWARD), value 0
Event: time 1509552586.338556, -------------- SYN_REPORT ------------
Event: time 1509552587.375649, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1509552587.375649, -------------- SYN_REPORT ------------
Event: time 1509552587.626549, type 1 (EV_KEY), code 158 (KEY_BACK), value 2
Event: time 1509552587.626549, -------------- SYN_REPORT ------------
Event: time 1509552587.650543, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
Event: time 1509552587.650543, -------------- SYN_REPORT ------------
Теперь давайте посмотрим, что происходит, когда я нажимаю кнопку следующего трека и кнопку предыдущего трека на клавиатуре:
Select the device event number [0-16]: 7
Event: time 1509552799.129798, type 1 (EV_KEY), code 165
(KEY_PREVIOUSSONG), value 1
Event: time 1509552799.129798, -------------- SYN_REPORT ------------
Event: time 1509552799.265788, type 1 (EV_KEY), code 165
(KEY_PREVIOUSSONG), value 0
Event: time 1509552799.265788, -------------- SYN_REPORT ------------
Event: time 1509552800.641684, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1
Таким образом, клавиатура генерирует правильный код "KEY_PREVIOUSSONG", "KEY_NEXTSONG", а пульт дистанционного управления - нет.
Итак, отредактируйте файл /etc/lirc/hardware.conf
Ну, на моей машине каталог / etc / lirc не существует. так...
$ apt install lirc
После установки файлов пакета скрипт запускается автоматически. Вы должны выбрать ваше удаленное оборудование из списка и нажать Enter. Я выбрал "Mac Mini Blah Blah" и из следующего списка (я думаю, передатчики) я не выбрал ни одного. Теперь есть файл /etc/lirc/hardware.conf. Он в основном пустой и указывает на файл, специфичный для данного пульта дистанционного управления. так что отредактируйте этот файл - это не легко выяснить местоположение, я нашел его в
cd /usr/share/lirc/remotes/apple/
nano lircd.conf.macmini
измените слово KEY_REWIND на KEY_PREVIOUSSONG и измените KEY_FORWARD на KEY_NEXTSONG.
Теперь перезапустите демон lirc, чтобы распознать новую конфигурацию.
sudo /etc/init.d/lirc restart
Теперь правая и левая кнопки будут работать.:)