TiVo Slide und eventlircd: Ausziehtastatur funktioniert nicht

  • Hallo,


    erstmal vielen Dank für eure schöne Distri. Nachdem ich endlich meine neue TiVo Slide am laufen habe (nachdem ich den Kernen gepatcht habe und eine eigenes HID Modul erstellt habe), hab ich ein kleines Problem. Nach erstellen der udev Regeln wird die remote von eventlircd erkannt und verwendet. Alle "Multimedia" Tasten funktionieren einwandfrei. Was jedoch nicht funktioniert ist die eigentliche Tastatur. Wenn eventlircd das Gerät nicht in Beschlag nimmt funktionieren Sie auf dem Terminal einwandfrei. Kurz: Ohne eventlircd: Tastatur geht, Multimedia Tasten nicht. Mit eventlircd: keine Tastastur, aber Multimediatasten


    Hat jemand einen Vorschlag wie ich das Problem lösen könnte? Bin relative neu im VDR bereich und kenn mich mit den Sachen nicht wirklich aus. Kann man eventlircd irgendwie beibringen das Gerät nicht exklusiv zu verwenden, bzw nur die Multimedia tasten?


    Falls jemand außer mir die TiVo benutzen möchte kann ich natürlich gerne ein deb Paket vom Kernel und den Headern zu Verfügung stellen.


    Beste Grüße,


    Metatron

  • Hallo, ich hätte da eine etwas unorthodoxe Idee, die Tastaturcodes an eventlircd vorbeizubekommen...
    Ich würde auf den eventlircd-Socket lauschen und die Tastendrücke des Tastaturteils an ein virtuelles Eingabegerät, das nicht von eventlircd blockiert wird weiterleiten. Probleme sehe ich bei dem Block mit den Richtungstasten links und dem Nummernblock rechts (liefern die andere Tastencodes als der Block oben auf der Fernbedienung)?


    Außerdem müsste ich wissen, welche Tasten da alles durchgereicht werden sollen - mit "sudo irw" solltest du die Tastennamen sehen, wenn du sie auf der Fernbedienung drückst.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,


    die Richtungstasten oben liefern andere Scancodes als die unten drinn. Die musste ich in meinem HID modul umbiegen, um gültige events zu erzeugen. Der Nummernblock unten entspricht den Tasten auf dem Nummernblock rechts auf einer Normalen Tastatur, die auf der Oberseite entspricht den Normalen Nummertasten oben auf der Tastatur. Prinzipiell kann ich in meinem HID Modul alles ummappen wie ich es brauche. Ich denke es würe da sinn machen die Pfeiltasten links auf was nicht Standardkonformes zu mappen und dann im Virtuellen Device wieder auf Pfeiltasten zu mappen.


    Events die im Moment gesendet werden werde ich morgen mit irw auslesen.


    Beste Grüße,


    Metatron

  • Ich habe es gerade nochmal durchgedacht - evtl. wäre es besser, das Eingabegerät direkt auszulesen und die Tasten, die für yaVDR definiert sind über ein virtuelles Eingabegerät an eventlircd weiterzureichen (sind weniger und mir schon alle bekannt ;) und man spart sich die Behandlung der Meta-Tasten).
    Ich installiere gerade eine 0.4 und schaue ob das realisierbar ist... (bin von meinen gewohnten Produktiv- und Testsystemen momentan getrennt ;(

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Eine Info wäre noch gut:
    Beim Nummernblock auf der FB: Kommen da Tastennamen wie KEY_1 usw. und auf dem Nummernblock der Tastatur KEY_NUMERIC_1 usw.?
    Damit die Richtungstasten der Tastatur funktionieren müssen sie ja KEY_LEFT/KEY_RIGHT/KEY_UP/KEY_DOWN heißen... irgendwelche Namenswünsche/Vorschläge für die Richtungstasten der Fernbedienung?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Sorry, ich war beim großen Weihnachtsessen ;)


    Also, der Nummernblock oben auf der Tastatur liefert: KEY_0 - KEY_9, die "Clear" Taste ist KEY_UNKNOWN, Enter ist KEY_ENTER (das kann ich aber z.B. auf KEY_OK im Modul ummappen).
    Im Moment liefern beide Kreuze (auf FB ebene, sowie Tastaturebene) die gleichen Tasten: KEY_LEFT/KEY_RIGHT/KEY_UP/KEY_DOWN und KEY_OK.


    Auf Tastaturebene sieht es wie folgt aus:
    Tastatur: KEY_A bis KEY_Z, also standard. Der Nummernblock liefert KEY_KP0 - KEY_KP9, entspricht also dem Nummernblock rechts auf ner normalen Tastatur. Kreuz auf der Tastaturebene:
    KEY_LEFT/KEY_RIGHT/KEY_UP/KEY_DOWN und KEY_OK



    Ich würde vorschlagen, dass mein Kernelmodul das obere Kreuz wie folgt mapped (ohne spezielles Modul funktioniert das Ding eh nicht):


    Hoch: KEY_NUMERIC2
    Runter: KEY_NUMERIC8
    Links: KEY_NUMERIC4
    Rechts: KEY_NUMERIC6
    Select: KEY_NUMERIC5


    Im evmap für das Gerät kann man die Tasten ja wieder auf was vernünftigeres mappen.


    Ich mach noch ein Bild mit sämtlichen Belegungen und lad es dann hoch.


    Beste Grüße,


    Metatron

  • Hallo, danke für die Bilder.
    Kannst du mal das Skript auf dein event-Gerät für die TiVo Slide anpassen (den Pfad kannst du z.B. über "cat /proc/bus/input/devices" herausfinden), auf dem yaVDR in eine Datei speichern und dann mit "sudo python <Pfad zur Datei" ausführen:


    Dann bitte mal die Taste 1 auf Fernbedienungs- und Tastaturfeld drücken und die Ausgabe hier posten, damit ich sehen kann, ob da die erwarteten Keycodes ankommen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Klar kann ich ;)


    1 auf FB Feld:


    19570 - 1 - 0
    20889 - 20215 - 0
    1 - 2 - 1
    19610 - 1 - 0
    20889 - 20215 - 0
    4 - 4 - 458782
    -15478 - 2 - 0
    20889 - 20215 - 0
    0 - 0 - 0


    "1 - 2 - 1" Sollte Keycode KEY_1 sein


    1 auf Tastaturfeld:


    22987 - 4 - 0
    20958 - 20215 - 0
    1 - 79 - 1
    23028 - 4 - 0
    20958 - 20215 - 0
    4 - 4 - 458841
    -21631 - 6 - 0
    20958 - 20215 - 0
    0 - 0 - 0


    "1 - 79 - 1" Keycode KEY_KP1



    Die Keycodes entsprechen also dem, was in der Input.h des Kernels definiert ist.


    Beste Grüße,


    Metatron

  • So, gibt was zum testen :D
    Aus den yaVDR-Repos noch das Paket python-uinput nachinstallieren.
    Eventlircd darf sich die FB/Tastatur nicht greifen.


    Dann das z.B. unter listener.py speichern: http://paste.ubuntu.com/783169/
    Und das als "remote_inv.py" im gleichen Ordner: http://paste.ubuntu.com/783168/


    Dann kannst du es so ausführen:

    Code
    sudo python listener.py -d /dev/input/event<X>


    Es wird dann ein virtuelles Eingabegerät mit dem Namen lircd erstellt (und wegen des Namens durch eine bereits in yaVDR definierte udev-Regel in eventlircd eingebunden) und alles Tasten, die in remote_inv.py definiert sind werden an dieses weitergeleitet. Du kannst die Tastenzuordnung in der remote_inv.py ändern - die Syntax ist Keycode (wie er auf dem /dev/input/event<X> Gerät ankommt):"Tastenname":

    Code
    352:"KEY_OK",

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,


    also im Prinzip funktioniert das ganze schon mal. Keyboard kommt als Keyboard an, FB als FB.


    Aber:
    Das Remapping der Tasten geht noch nicht. Laut irw kommt gar nix an. Den Output hab ich dir mal hier.
    War Pfeil hoch (KEY_NUMERIC_2) . Ach ja und laut die Tasten kommen immer doppelt an, aber ich glaub das kann man irgendwie im evnetlirc ausfiltern oder?

  • Da muss ich nochmal nachfragen:

    Das Remapping der Tasten geht noch nicht. Laut irw kommt gar nix an.


    D.h. du änderst es in der remote_inv.py und startest den listener neu und wenn du auf den eventlircd-Socket lauschst, kommt nichts an?


    Wegen den doppelten Tasten - an der Ausgabe bei KEY_NUMERIC_2 (laut input.h 0x202=202):

    Code
    21616 14 0
    20084 20216 0
    1 514 1 <- Das wertet mein Skript aus, da Typ = 1 = EV_KEY, code = 512 (nicht in der input.h definiert), value = 1 = Tastendruck
    21648 14 0
    20084 20216 0
    4 4 786498
    29609 14 0
    20084 20216 0
    0 0 0


    Wenn das so kommt (und man es nicht im Kernel anpassen will), müsste die Zeile 13 in der remote_inv.py dann so lauten:

    Code
    514:"KEY_UP", #KEY_NUMERIC_2


    Ach ja und laut die Tasten kommen immer doppelt an, aber ich glaub das kann man irgendwie im evnetlirc ausfiltern oder?


    Ich sehe da nur einen Tastendruck in der von dir geposteten Ausgabe ?(
    Muss das mal ggf. daheim mit einer Bluetooth-FB testen...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Argh - ich hab den Denkfehler: yaVDR ist ein 64-Bit System und damit stimmt mein Struct-Aufruf wohl nicht.
    Ich schau mal ob ich das noch hinbekomme...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Manchmal sinds die kleinen Dinge, die einem Ärger machen.


    Mir ist aufgefallen, dass in der Input.h die Numeric keys in Hexadezimal angegeben sind. Wenn man das änder gehts auch ;)


    remote_inv.py


    KEY_ESC macht noch ärger.


    Der müsste entweder ans eventlirc.d oder an uinput und eventlircd. Sonst kommt man in den Menüs des PVR nimmer zurück. Mal schauen ob ich das allein rein kriege ;)


    Beste Grüße,


    Metatron

  • So, habs nochmal genauer angeschaut.
    Das remapping der Pfeiltasten geht jetzt, bis auf KEY_BACK->KEY_ESC.


    Und ich weiß denk ich mal dass warum die Tasten doppelt gedrückt werden:
    Ich geh davon aus, dass KEY_0 ... KEY_9 sowohl auf der Tastatur als auch in eventlirc gedrückt wird. Dadurch schaltet dann der VDR 2 mal. Vielleicht ist es das selbe Problem mit der ESC Taste.

  • Also habs mir nochmal angeschaut. irw sagt das KEY_ESC ankommt, das passt also. Ich denk das Problem ist dass in eine KEY_BACK von der Tastatur und ein KEY_ESC vom eventlirc ankommt. Die Zahlentasten kommen dann auch von beiden Devices so an. Das Struct müsste so schon passen. Laut Python Doc ist die Größe der Variablen sowie das alignent eh Plattformabhänging.

  • Ich geh davon aus, dass KEY_0 ... KEY_9 sowohl auf der Tastatur als auch in eventlirc gedrückt wird. Dadurch schaltet dann der VDR 2 mal. Vielleicht ist es das selbe Problem mit der ESC Taste.


    Dann wäre es fast sinnvoller die Keymap im Kernel so umzugestalten, dass du für die Zahlentasten z.B. ein KEY_KP<X> sendest und das dann vom Skript auf KEY_<X> ummappen lässt gleiches evtl. auch für KEY_BACK/KEY_ESC. Eventlircd blockiert eigentlich alle Geräte, die es ausliest vor dem Zugriff durch andere Programme (sieht man schön wenn man mit evtest zugreift)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Nein seahawk holt sich keinen Exklusivzugriff, aber das ist in dem Fall ja auch gut so, die Tastatur soll ja auch als solche ankommen.


    Jetzt klappt auf jeden Fall alles so wie ich will. Hab die Keys die ärger gemacht haben umgemappt. Die Zifferntasten lass ich mir einfach als Tastatureingang geben und geb dich nciht über eventlircd. Macht ja im VDR und im XBMC eh keinen unterschied. Hab noch ne Kleinigkeit an deinem script geändert. Scheinbar sendet die FB keinen Key Pressed und Released code. Frag mich ned warum die macht da irgendwas intern. Hab Tasten die nur releasen und welche die nur drücken. ist ganz komisch. Hab die Unterscheidung raus. Sendet jetzt immer an den Eventlircd das sie gedrückt und dann gleich wieder losgelassen wurde.


    Auf jeden Fall vielen vielen Dank für Deine Hilfe!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!