Simulierten Tastendruck an eventlircd schicken

  • Hi,


    ich würde gerne per Script einen Simulierten Tastendruck an eventlircd schicken. Ich meine damit so was ähnliches wie "svdrpsend HITK ..." nur halt, das der Empfänger der Nachricht nicht direkt der VDR sein soll, sondern halt der eventlircd Daemon.
    Kann mir jemand sagen wie ich das anstellen kann?


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Uinput verwenden. Das programmiert man aber nicht mal eben in 5 Minuten. Ich habe mir in Perl damit einen Daemon gebastelt, der beim am Laptop angeschlossenen Powermate dessen Drehung und Druck auf die Standard-Tastatur-Codes für "Lauter", "Leiser" und "Mute" umsetzt.

  • Das programmiert man aber nicht mal eben in 5 Minuten.

    Och das geht schon ;)
    Mit dem Python-Modul für uinput ist das sogar ganz leicht: http://tjjr.fi/sw/python-uinput/

    Python
    #!/usr/bin/python
    import uinput
    
    
    supported_events = [uinput.KEY_OK, uinput.KEY_PROG1] # je nach Wunsch beliebig mit KEY_*, REL_* und BTN_* Events erweiterbar
    
    
    device = uinput.Device(events=supported_events, name='lircd') # name='lircd', damit eventlircd sich das Gerät wie bei der Verwendung von lircd2uinput greift
    device.emit_click(uinput.KEY_OK)


    Dann einfach als root ausführen. Man kann python auch im interaktiven Modus aufrufen und und die gewünschten device.emit_click() Aufrufe absetzen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    3 Mal editiert, zuletzt von seahawk1986 ()

  • Oder mit der gewünschten Taste als Argument:


    Aufruf:

    Code
    # python uinput_test.py KEY_OK

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Ach ja - wenn man nicht die aktuellste Version 0.10.2 des Python-Moduls nutzt, dann kann man statt

    Code
    device.emit_click(event)

    ersatzweise das schreiben:

    Code
    device.emit(event, 1,syn=False)
    device.emit(event, 0)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke, das sollte schon mal helfen.


    Falls jemand ne ähnlich einfache Idee für nen C-Programm hat, würde mich das weiterhin interessieren.


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Falls jemand ne ähnlich einfache Idee für nen C-Programm hat, würde mich das weiterhin interessieren.

    Das sieht nicht allzu schlimm aus:
    http://thiemonge.org/getting-started-with-uinput

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das Python-Modul nutzt eine in C geschriebene Bibliothek - den kann man natürlich auch verwenden: https://github.com/tuomasjjras…ree/master/libsuinput/src bzw. https://github.com/tuomasjjrasanen/libsuinput

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,


    ich hab nun das Python Script ausprobiert. Leider passiert gar nichts, wenn ich das aufrufe. der eventlircd Daemon läuft und reagiert auch auf die Fernbedienung (mit irw getestet).
    Muss ich da noch irgendwas beachten, oder habe ich das richtig verstanden, dass ein mit dem Programm abgesetztes KEY_OK Event auch sofort mit irw hätte angezeigt werden müssen.


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Muss ich da noch irgendwas beachten, oder habe ich das richtig verstanden, dass ein mit dem Programm abgesetztes KEY_OK Event auch sofort mit irw hätte angezeigt werden müssen.

    Hast du es als root aufgerufen und ist bei dir eine udev-Regel aktiv, die Input-Devices mit dem Namen lircd mit dem Attribut der Umgebungsvariable eventlircd_enable=true versieht? https://github.com/yavdr/yavdr…v/98-eventlircd.rules#L22


    Bei mir hat das gestern unter Arch Linux einwandfrei funktioniert.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

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