Verständnisfrage zu inputlirc und ir-keytable

  • Hallo,


    ich habe eine Verständnisfrage zu inputlirc und ir-keytable.


    Ich nutze für die Fernbedienung inputlirc, da die Konfiguration dadurch sehr einfach ist.
    D.h. man braucht die Dateien /etc/lirc/lircd.conf und /etc/lirc/hardware.conf nicht.
    Ich habe dafür nur dies eingestellt:

    Code
    1. /etc/default/inputlirc
    2. ----------------------
    3. # Options to be passed to inputlirc.
    4. EVENTS="/dev/input/by-id/usb-15c2_ffdc-event-if00"
    5. OPTIONS="-g -m 0"


    Ich glaube, es muss nicht einmal das Paket lirc installiert sein.


    Statt irw kann man dann ir-keytable nutzen.
    Mit diesem Programm kann man das Mapping zwischen den Hex-Codes und den Namen der Keys beeinflussen.


    Nach der Installation von ir-keytable gibt es eine UDEV-Regel, über die eine allgemeine Config-Datei geladen wird:

    Code
    1. cat /lib/udev/rules.d/40-ir-keytable.rules
    2. # Automatically load the proper keymaps after the Remote Controller device
    3. # creation.
    4. # The keycode tables rules should be at /etc/rc_maps.cfg
    5. ACTION=="add", SUBSYSTEM=="rc", RUN+="/usr/bin/ir-keytable -a /etc/rc_maps.cfg -s $name"


    Der passende Eintrag in der Config-Datei ist für mich:

    Code
    1. cat /etc/rc_maps.cfg | grep imon-pad
    2. * rc-imon-pad /lib/udev/rc_keymaps/imon_pad


    welcher auch automatisch geladen wird:

    Code
    1. sudo ir-keytable
    2. Found /sys/class/rc/rc0/ (/dev/input/event5) with:
    3. Driver imon, table rc-imon-pad
    4. Supported protocols: RC-6 other
    5. Enabled protocols: other
    6. Repeat delay = 500 ms, repeat period = 125 ms


    So, jetzt zu meiner Frage:
    In der Datei /lib/udev/rc_keymaps/imon_pad gibt es keinen Eintrag für "KEY_MEDIA", der in meiner remote.conf des VDR zum Aufrufen des Menus genutzt wird.

    Code
    1. cat /lib/udev/rc_keymaps/imon_pad | grep -i 2ab195b7
    2. kein Treffer
    3. cat /lib/udev/rc_keymaps/imon_pad | grep -i media
    4. kein Treffer


    Die Taste funktioniert aber, da dafür ein Eintrag in der Key-Tabelle vorhanden:

    Code
    1. sudo ir-keytable -r | grep -i media
    2. Enabled protocols: other
    3. scancode 0x2ab195b7 = KEY_MEDIA (0xe2)


    Kann mir jemand erklären, woher dieser Code gezogen wird, obwohl er nicht in der Datei /lib/udev/rc_keymaps/imon_pad steht?
    Das gleiche gilt auch noch für einige andere Tasten.


    Falls es nicht deutlich geworden ist. Es funktionieren alle Tasten beim VDR. Ich will nur verstehen warum.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Hallo, könnte es sein, dass diese Tasten direkt von inputlirc geliefert werden?
    Du könntest mal evtest auf das entsprechende Device loslassen (vor und nach entladen der keytable) und mal in ir-keytable versuchen die Keymaps zu entladen (ist nur temporär bis zum nächsten Neustart) und nachsehen, ob die Tasten dann noch durchkommen:

    Code
    1. sudo ir-keytable -c

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Mit laufendem inputlirc und geladener Key-Table kommt das:


    Es kommen allerdings keine Tastendrücke an, da das Device ja von inputlirc geblockt ist.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Die Key-Code-Einträge in der Keymap haben nichts mit den Tastennamen in der remote.conf zu tun. Die Keymap enthält Scancode/Keycode-Paare. Die verfügbaren Keycodes sind in der /usr/include/linux/input.h festgelegt (Kernel API/Headers). Hintergrund ist, dass Fernbedienungen wie HID-Geräte eingebunden werden sollen. So funktionieren bei der MCE-Fernbedienung etwa einige Tasten im nackten Terminal ohne irgendeinen Daemon (wie eine ganz normale Tastatur also). LIRC bietet daher zuviel. Und es reicht inputlirc oder eventlirc oder eben doch LIRC mit Gerät devinput. Alle drei Varianten "mappen" HID-Tasten auf LIRC-Tasten. Damit können Programme die bisher mit LIRC so gearbeitet haben, weiter so betrieben werden. Die Abbildung von HID-Taste auf LIRC-Taste kann man konfigurieren. Für das gute alte LIRC gibt es da die fertige Vorlage /usr/share/lirc/remotes/devinput/lircd.conf.devinput. Die anderen beiden Programme habe ich nie benutzt.


    Gruß

  • Die Key-Code-Einträge in der Keymap haben nichts mit den Tastennamen in der remote.conf zu tun.


    Das ist mir schon klar. Ich wollte nur ausdrücken, dass ich den Key in der remote.conf nutzen kann, obwohl er in /lib/udev/rc_keymaps/imon_pad nicht enthalten ist.


    Quote

    Die verfügbaren Keycodes sind in der /usr/include/linux/input.h festgelegt (Kernel API/Headers).


    Also kommt der Code wahrscheinlich von hier:

    Code
    1. cat /usr/include/linux/input.h | grep -i key_media
    2. #define KEY_MEDIA 226


    Quote

    Und es reicht inputlirc oder eventlirc oder eben doch LIRC mit Gerät devinput. Alle drei Varianten "mappen" HID-Tasten auf LIRC-Tasten.


    Da ich nicht den lirc-Dämon mit lircd.conf sondern inputlirc nutze, gibt es doch aber zwei Mappings. Einmal im Kernel (input.h) und dann noch /lib/udev/rc_keymaps/imon_pad über udev und ir-keytable. Ich hatte es so verstanden, dass das Mapping aus ir-keytable das Mapping des Kernels übersteuert.
    Aus man ir-keytable:

    Code
    1. ir-keytable is a tool that ... allows to get/set IR keycode/scancode tables,


    Was ist denn da führend? Ich habe es offenbar immer noch nicht verstanden.

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Das ist mir schon klar. Ich wollte nur ausdrücken, dass ich den Key in der remote.conf nutzen kann, obwohl er in /lib/udev/rc_keymaps/imon_pad nicht enthalten ist.


    Vermutlich verwende ich die Bezeichnungen Keycode/Scancode nicht korrekt. Meinem Verständnis nach ist der Code der direkt vom Gerät (Tastatur, Maus, Fernbedienung, ...) kommt der Scancode. Der Kernel abstrahiert von der Hardware und bildet mitunter verschiedene Scancodes auf den selben Keycode aus der input.h ab. inputlirc und eventlirc mappen nur von Keycodes auf LIRC-Codes.


    Sozusagen:
    Kernel ohne RC-Treiber: Scancode ---> LIRC ===> LIRC-Code ---> VDR
    Kernel mit RC-Treiber: Scancode ---> Kernel ===> Keycode ---> LIRC ===> LIRC-Code ---> VDR


    ir-keytable steuert die Abbildung im Kernel. Für die mceusb-Dinger kann man so einzelne Protokolle deaktivieren oder den Scancode zu LIRC durchleiten. Bei den imon-Dingern bleibt die Wahl zwischen MCE- oder dem properitären Modus. Am Ende kommt aber in der Standardkonfiguration ein Keycode raus. LIRC verarbeitet Keycodes mit dem Gerät devinput. Bei LIRC gibt es also eine lircd.conf die von Keycodes auf LIRC-Codes abbildet (wie das bei den anderen beiden eingestellt wird, weiß ich nicht). Mit irw kannst du also immer noch die LIRC-Codes sehen. Dein KEY_MEDIA sollte also ein LIRC-Code sein, der aber von einem anders lautenden Keycode abgebildet wurde. Der Keycode mit dem Namen KEY_MEDIA findet in der imon_pad-Tabelle keine Verwendung. Keine Ahnung warum KEY_MEDIA in der lircd.conf eine andere Bedeutung beigemessen wird als KEY_MEDIA aus der input.h, also nicht aufeinander abgebildet werden.

  • Hallo goldbär,


    ich nutze als Frontend lediglich xbmc und versuche hier auch gerade eine Lösung zu finden, da seit ubuntu 11.10 plötzlich 9 Tasten nicht mehr funktionieren.


    Ich bin hier am Firckeln: ubuntu 11.10 - imon pad - ir-keytable/lirc


    Viele Grüße

    frontend software - android tv | libreelec | windows 10 | kodi krypton | emby for kodi | vnsi
    frontend hardware - nvidia shield tv | odroid c2 | yamaha rx-a1020 | quadral chromium style 5.1 | samsung le40-a789r2 | harmony smart control
    -------------------------------------------
    backend software - proxmox | openmediavault | debian jessie | kernel 4.4lts | zfs | emby | vdr | vnsi | fhem
    backend hardware - supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x4tb wd red | raid-z2 | digital devices max s8