ИК-пульт - некоторые медиа-ключи не будут работать (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

Теперь правая и левая кнопки будут работать.:)

Другие вопросы по тегам