[ANNOUNCE] keyboard proxy

  • Hallo zusammen,


    ich stelle hier mal meinen Keyboard-Proxy rein :]
    Ich sehe das weder als Release noch als fertig an, sondern eher für die Todesmutigen unter Euch die sowas auch brauchen können und mal einen Blick drauf werfen möchten.



    Wofür ist das gut?
    Der Keyboard-Proxy hängt sich, wie der Name schon sagt, zwischen Keyboard und VDR.
    Hatte der VDR vorher direkt am /dev/tty1 gelauscht tut das nun diese Programm und gibt die gedrückten Tasten an ein PseudoTTY in /dev/pts/ weiter.
    Zusätzlich kann dadurch bei einer bestimmten Tastenfolge eine Aktion ausgelöst werden.


    Der Zweck der Übung war es, die Maschine noch bedienen zu können selbst wenn der VDR selbst nicht mehr reagieren sollte.


    So ist es nun mit diesem Beispiel so gelöst, das die Kombinationen:


    Powerknopf die Maschine herunterfährt (OK nix tolles, war vorher schon so ;) )
    Power -> Power das CD-ROM öffnet
    Power -> OK den VDR-Prozess beendet
    Power -> Down die Maschine sofort herunterfährt (ohne ACPI Wakeup Änderung)


    Mehr Kombinationen sind natürlich denkbar :)


    Was brauche ich
    ACPI Events
    Perl



    Wie installiere ich das
    Das angehängte Skript irgendwo hinspeichern und dann per inittab oder runvdr starten.


    z.B:

    Code
    c1:12345:respawn:/vdr/bin/keyboard_proxy


    Wenn das Skript läuft, erzeugt es zwei Dateien:

    Code
    /var/run/keyboard_proxy.pid


    und

    Code
    /var/run/vdr_pts


    In keyboard_proxy.pid steht (natürlich) die PID des Prozesses und kann so scriptgesteuert gekillt oder anderweitig mit Signalen versorgt werden (dazu später mehr).


    In vdr_pts steht das PseudoTTY von dem der VDR seine Tastatureingabe entgegennehmen kann.


    Automatisch kann der VDR mit dieser Information zB so gestartet werden:

    Code
    vdr -t `cat /var/run/vdr_pts`


    Man beachte die Backticks! Also nach links geneigte Anführungszeichen!


    Ausserdem muss sichergestellt werden, dass der VDR mit den ACPI-Signalen des Powerknopfes versorgt wird.


    Für das Eventhandling gibt es wahrscheinlich bei jeder Distri ein Shellskript, bei (meiner) Gentoo ist das /etc/acpi/default.sh


    Die sieht so aus:



    Wichtig ist dass bei power ein "kill -10 `cat /var/run/keyboard_proxy.pid`" steht. Auch hier bitte wieder die Backticks beachten.


    "-10" ist übrigens Signal USR1



    Wahrscheinlich müssen im Array %KEYDEFINITIONEN noch die Zeichenfolgen angepasst werden - die sind da so, wie meine Scan- auf Keycodes gemappt sind (wie im Wiki beschrieben).
    Die notierten Hex-Folgen sind die einzelnen Tasten, jede Taste wird auch nach /tmp/keylog geschrieben, wer also eigene Tasten anlernen will kann hier reinschauen und die Zeichenfolge anpassen/erweitern.
    Es werden zwingend 6 Zeichen für die Erkennung vorausgesetzt, aber nachdem da mit regulären Ausdrücken gearbeitet wird kann für "beliebig" ein Punkt eingesetzt werden, siehe OK-Taste!


    Also schaut mal bitte, ob Ihr damit was anfangen kann, ob es funktioniert wie gewünscht, ob Fehler drin sind, ob Ihr was vermisst, usw!



    Gruss
    Thomas



    P.S.:
    Vielen Dank an LordJaxom und Gonz für Inspiration und Hilfe :]

  • Hallo


    ich schau mir das _Heute_ mal an ;)

    Gruß


    sdu

    *******************************************************************
    gen2vdr 2.0
    TT1.3, Skystar 2.6c, activy300, STBs AVBoard
    *******************************************************************

  • Das hört sich doch mal cool an....


    Idee:
    Wenn man das jetzt noch mir einem "remote KDB" verbinden kann wäre das klasse. Also z.B. ein Telnet-Client als "virtuelle Tastatur". Ich habe an meinem VDR in der Tat kein Keyboard dran.


    Na mal sehen. Ich kann zwar kein Perl.. Aber was nich' ist kann ja noch werden. ;)


    V_R

    VDR1: POV ION 330 mit Media-Pointer MP-S2 auf yaVDR 0.3.1 - enermay 370 Watt - 80GB SSD + 500GB HD - CoolerMaster ATX-620 - VGA2Scart + HDMI
    VDR2: Zotak ZBOX ID40 auf yaVDR unstable - Sundtek DVB-S2 + remote Sundtek - 60GB SSD - HDMI
    VDR3
    : Zotak ZBOX ID40 auf yaVDR unstable - remote Sundtek - 500GB HD - DVI
    Atom 2700 mit 13W, Ubuntu PP, 60GB SDD + 240GB SSD, 2x Sundtek DVB-S2

  • Hi,


    hätte auch noch ne Anregung,
    könnte man evtl mit Power+li auf ne andere Konsole umschalten + tdk umschalten?
    und mit Power+re gehts wieder zurück auf (virtuelle)vdr-konsole+tdk auf aux??


    oder auch mit Power + re/li zwischen den Konsolen "blättern"?


    siehe auch
    http://www.vdr-portal.de/board/thread.php?threadid=40402&sid=


    hab mir das schon als shellskript zusammengebastelt, mangels strg, alt und F1 Tasten an der neuen Activy IR-Tastatur aber noch nicht auf die tastatur gelegt...


    Code
    skript zum umschalten
    #!/bin/sh
    if [ "$1" = "8" ] ; then
    		tdk5002cctl -s1 >/dev/null
    	else
    		tdk5002cctl -s0 >/dev/null
    	fi
    chvt $1


    müsst halt nach perl umgebaut werden...


    MfG
    FLO

    VDR1 Activy 300 - gen2vdr1.1 - SkyStar2, em84 als Ausgabegerät
    VDR2 Activy 300 - gen2vdr1.1 - Nova T500, em84 als Ausgabegerät

  • Ausgezeichnete Idee!!!


    Das setz ich auch noch um!


    Wie verhält sich das eigentlich mit FB-Devices, wenn ich die Konsole umschalte, wird da der Bildschirminhalt trotzdem überschrieben, zB vom GraphTFT Plugin?

  • Zitat

    Original von Thomas
    Wie verhält sich das eigentlich mit FB-Devices, wenn ich die Konsole umschalte, wird da der Bildschirminhalt trotzdem überschrieben, zB vom GraphTFT Plugin?


    Wie jetzt du schaltest doch die Hardware um, oder hab ich die Frage nicht verstanden?


    Gruss Ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

  • Bei mir läufts so:


    TV kommt vom TV-Out der FF
    Am TV-Out der Activy ist ein GraphTFT angeschlossen - und das geht ja bekanntermaßen über FrameBuffer.


    Die Überlegung/Hoffnung war jetzt, dass die FB-Ausgabe nur auf dem tty1 erfolgt - und wenn ich jetzt umschalte per chvt, dass ich eine Konsole bekomme und GraphTFT quasi im Hintergrund arbeitet - ist aber, wie ich heute Abend geprüft habe, nicht der Fall, die Konsole könnte also zB vom GraphTFT wieder überschrieben werden.
    Sollte der VDR aber mal stehen spielt das keine Rolle und man könnte direkt ohne SSH und Konsorten arbeiten.


    Für diejenigen, die nun den em84 nutzen könnte man aber dennoch umschalten, denn hier sollte (oder irre ich mich da) das Bild ja nicht über FB kommen.
    Also zB dann "Power->links == VDR, Power->rechts == Konsole"

  • Zur Ergänzung: Das Umschalten auf eine Konsole funktioniert nur vom VDR weg zu einer anderen - dann verliert die Konsole ja die Kontrolle und der Proxy ist nicht mehr "am Drücker"!


    Eine geringfügig verbesserte Version kommt bald - falls das jemand brauchen kann...

Jetzt mitmachen!

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