[Gelöst] externalplayer-plugin reicht Tasten der Fernbedienung nicht weiter

  • I starte Firefox zum Abspielen von Youtube mittels des externalplayer-Plugins. Das funktioniert auch, aber Tastendrücke der Fernbedienung werden nicht weitergegeben.


    Meine Konfiguration ist aus dem mplayer-Beispiel abgeleitet und sieht so aus:

    Wo liegt der Fehler?


    VDR s. Signatur.

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


  • Hi,

    Dazu stellt sich die Frage welche Fernbedienung und wie ist die angesteuert(Lirc oder xkeysym oder...) . Welches VDR Ausgabeplugin nutzt du? Drm oder X oder ein Exot wie FF?

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Fragen über Fragen.... Ich kann nicht behaupten, dass ich mein System komplett durchschaue (bin noch am Lernen). Aber fangen wir mal an:


    Die Fernbedienung ist eine uralte Medion X10. ir-keytable zeigt:

    Code
    /sys/class/rc/rc0/ gefunden mit:
            Name: X10 Wireless Technology Inc USB Receiver
            Treiber ati_remote
            Standardschlüsselcodeabbildung: rc-medion-x10
            Eingabegerät: /dev/input/event8
            Linux-Infrarotfernbedienung : /dev/lirc0
            unterstützte Kernelprotokolle: other 
            Aktivierte Kernelprotokolle: other 
            bus: 3, Anbieter/Produkt: 0bc7:0006, Version: 0x0100
            Wiederholungsverzögerung = 500 ms, Wiederholungsperiode = 125 ms

    ps -aux | grep lirc zeigt:

    Code
    root  824  0.0  0.0   3152  2388 ?        Ss   12:25   0:00 /usr/sbin/eventlircd -f --socket=/var/run/lirc/lircd
    vdr  1268  0.0  0.0   6720  1884 ?        Ss   12:25   0:00 /usr/bin/irexec /home/vdr/.lircrc


    Ausgabeplugin ist softhddevice


    Der VDR ist yavdr-0.7 ansible auf Ubuntu 20.04


    Ich hoffe, das hilft weiter.

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


  • Wo liegt der Fehler?

    Ich würde vermuten, dass der Firefox nichts mit den Sachen anfangen kann, die das externalplayer-Plugin an ihn schickt, weil der nicht wie mplayer funktioniert, sondern so ausgelegt ist, dass er die Events nur vom X-Server bekommt.


    Eine Möglichkeit das bei yavdr-ansible zu lösen, wäre über das yavdr-frontend eine Systemd-Unit für die Ausgabe zu starten, die zusätzlich zum Firefox auch noch irxevent mit startet und dann aus den Tastendrücken, die von eventlircd kommen, Eingaben generiert, die von Clients des X-Server gesehen werden können - in [gelöst] [yavdr-ansible] Fernbedienung in Anwendungen nutzen (Firefox, Higan etc. pp.) hat sich Gsus eine Lösung erarbeitet, wie das funktionieren kann.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • In [gelöst] [yavdr-ansible] Fernbedienung in Anwendungen nutzen (Firefox, Higan etc. pp.) hat sich Gsus eine Lösung erarbeitet, wie das funktionieren kann.

    Das scheint genau das zu sein was ich brauche. Werde in dieser Richtung mal weiterforschen.


    Immerhin hab ich es gerade alleine (!) hinbekommen, dass mein Atmolight auch mit dem Firefox läuft. Nur das Hin- und Herschalten muss noch gelöst werden, evt. kann man das ja so ähnlich machen wie für die Fernbedienung.

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


  • Ich habe die Lösung von Gsus ausprobiert.


    Es funktioniert alles wie er sich das gedacht hat. Beim Starten einer Applikation wird eventlircd gestoppt.

    Das Input-Device der Fernbedienung ist dann verfügbar und ich kann mit evtest die Maustasten sehen.

    xev zeigt leider immer noch nichts. Die Tasten kommen nicht bei X11 an.


    Ich habe in /etc/X11/xorg.conf die Section InputClass auskommentiert, wie Gsus sagt, aber das kann doch nichts bewirken da ja eventlircd ohnehin gestoppt ist.


    <edit>

    In /etc/X11/conf.d befindet sich die Datei 40-ignore-eventlircd.conf. Wenn man die löscht, kommen Tasten in X11 an.

    Es scheint nur noch eine Kleinigkeit zu fehlen, aber ich komme nicht drauf. Suche gestaltet sich schwierig, ich habe wohl noch nicht den richtigen Suchbegriff gefunden.

    </edit>


    Wenn ich die Fernbedienung an mein Notebook mit Kubuntu 22.04 stecke, kann ich sie benutzen soweit sinnvoll (Lautstärkeeinstellung etc).

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


    Einmal editiert, zuletzt von wofritz ()

  • Nun will ich die Tastenbelegung für den Firefox anpassen. Dachte mit irxevent wie oben vorgeschlagen.


    Das will aber den Lirc-Socket haben, also muss eventlircd laufen. Also zurück auf Start.


    Nun wird eventlircd nicht gestoppt, nur irexec (muss vielleicht nicht sein) und irxevent gestartet.


    Das läuft. Frontend detached, Firefox kommt hoch, Tasten kommen bei Firefox an, aber:


    Bei jedem Tastendruck wird das Frontend wieder eingeschaltet. Ich kann es mit "frontend-dbus-send stop" händisch ausschalten und der Firefox erscheint wieder, und ich sehe, dass er die Taste korrekt empfangen hat.


    Wie kriege ich es nun noch hin, dass das Frontend detached bleibt?

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


  • Ich habe in /etc/X11/xorg.conf die Section InputClass auskommentiert, wie Gsus sagt, aber das kann doch nichts bewirken da ja eventlircd ohnehin gestoppt ist.

    Damit hast du ggf. das Problem, dass eventlircd das Gerät für die Fernbedienung nicht exklusiv öffnen kann - und dann funktioniert die im VDR nicht bzw. höchstens für die Frontends, die ebenfalls Events verarbeiten, die vom X-Server kommen, was dann im dümmsten Fall zu doppelten Tastendrücken führen kann.

    Nun wird eventlircd nicht gestoppt, nur irexec (muss vielleicht nicht sein) und irxevent gestartet.

    Solange du keine Fernbedienungstasten in irxevent nutzen willst, die bereits von irexec belegt sind, muss das nicht gestoppt werden.

    Wie kriege ich es nun noch hin, dass das Frontend detached bleibt?

    Regelhaft funktioniert das so, dass man frontend-dbus-send switchto $FRONTEND (bzw. die entsprechende DBus-Methode von yavdr-frontend - ich hatte schon mal ein bisschen Dokumentation dazu geschrieben, das deckt aber noch nicht alles ab: https://gist.github.com/seahaw…5296f4175ca85eda4bc6cd449) aufruft (wobei $FRONTEND der Name einer .desktop-Datei (in dem Fall wird die über die /usr/lib/systemd/user/app@.service gestartet und nachverfolgt) oder einer anderen Systemd-Unit in der User-Session für den Nutzer vdr sein kann), vom aktuell als Ausgabe gesetzten Programm zu einem anderen Programm zu wechseln. Dann weiß das Frontend-Skript, dass es das zuvor aktive Frontend nicht wieder aktivieren soll, bis diese Systemd-Unit wieder beendet wurde bzw. man ihm sagt, dass es zurück schalten soll.


    Also angenommen die Ausgabe über ein VDR-Frontend ist gerade aktiv und man führt frontend-dbus-send switchto firefox aus.

    Das führt dazu, dass das aktuell aktive VDR-Frontend beendet wird, der VDR nicht mehr auf die Fernbedienung reagiert (passiert über das dbus2vdr Plugin - das macht im Prinzip das selbe wie ein svdrpsend remo off) und da es standardmäßig keine firefox.service Unit für die User-Session gibt, wird app@firefox.service in der Systemd User Session des Nutzers VDR gestartet, das die Informationen aus der /usr/share/applications/firefox.desktop nutzt, um den Firefox zu starten.


    Systemd übernimmt dann die Aufgabe den Status des von ihm gestarteten Prozesses zu tracken und das yavdr-frontend lauscht auf dessen DBus-Signale, die etwaige Statusänderungen für die Systemd-Unit weitergeben. Wenn die Systemd-Unit ihren Status auf stopped wechselt, reaktiviert das yavdr-frontend Skript das VDR-Frontend und lässt den VDR wieder auf die Fernbedienung reagieren (analog zu svdrpsend remo on).


    Ansonsten kann man mittels frontend-dbus-send toggle_noninteractive auch das gerade aktive Frontend stoppen und das yavdr-frontend reagiert nicht auf Tastendrücke auf der Fernbedienung, um das Frontend wieder zu starten, bis man das es über frontend-dbus-send toggle_noninteractive, frontend-dbus-send toggle oder frontend-dbus-send start wieder anschaltet.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich denke ich habe es jetzt.


    Ich habe für Firefox eine systemd-unit gebaut, die irexec erst mal stoppt, dann neu startet mit einer angepassten .lircrc (s.u.). Außerdem wird irxevent gestartet. Dann wird firefox gestartet. Wenn Firefox gestoppt wird, werden irxevent und das modifizierte irexec gestoppt und das originale irexec gestartet.


    Warum eine modifizierte .lircrc?

    Ich habe eine ganze Menge Tasten umdefiniert. Teilweise werden sie über irxevent gesteuert, aber irxevent kann keine einfachen Mausklicks erzeugen (man muss immer eine x,y-Koordinate mitgeben). Dafür nehme ich xte.


    Hiermit lässt sich der Firefox recht bequem mit der Fernbedienung steuern.


    Das Ganze lässt sich sicher noch verbessern (evt. irxevent komplett durch xte ersetzen), aber erst mal soll es sich im Alltagsbetrieb bewähren.

    MSI C847MS-E33, Cine S2 6.0, Zotac GT630 (GK208), dual boot
    Work: yaVDR 0.7 ansible Ubuntu 22.04. Backup: yaVDR 0.5 Ubuntu 12.06


  • wofritz

    Hat den Titel des Themas von „externalplayer-plugin reicht Tasten der Fernbedienung nicht weiter“ zu „[Gelöst] externalplayer-plugin reicht Tasten der Fernbedienung nicht weiter“ geändert.

Jetzt mitmachen!

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