[gelöst][für X]Sende Keycodes an laufenden Prozess

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Debian_anwaerter
Beiträge: 76
Registriert: 08.08.2006 17:43:16
Lizenz eigener Beiträge: MIT Lizenz

[gelöst][für X]Sende Keycodes an laufenden Prozess

Beitrag von Debian_anwaerter » 16.08.2014 23:49:54

Guten Abend,
ich habe da ein kleines Problem mit den Keycodes bzw Tastertureingabe an laufende Prozesse. Ich weiß ja das man mit verschiedenen Befehlen bzw scripte einiges erschlagen kann aber irgendwie komme ich momentan nicht weiter, vielleicht habe ich auch nur ein Denkfehler. Mit den folgenden Bashcode versuchte ich schon die Standard Eingabe der Prozesse zu füttern. Leider brachte mir keiner dieser Befehle einen zufriedestellenden Erfolg auch nach stundenlanger Suche bei google.

Dieses auszug mit EOF benutzte ich als skript

Code: Alles auswählen

<<EOF echo 1    
>EOF > /proc/xxx/fd/0 

Code: Alles auswählen

 "echo 1" > /proc/xxx/fd/0 

Code: Alles auswählen

echo -e "1 \036" > /proc/xxx/fd/0 
Diese Anstrengung hat eigentlich ein Zweck ich möchte das Programm xpdf per Fernbedinung controllieren, dazu hatte ich mir vor ein paar Monaten den USB IR REMOTE RECEIVER zusammengelötet
http://www.vdr-portal.de/board18-vdr-ha ... ed-on-irmp Dieser Schaltplan wurde bei http://www.mikrocontroller.net/ hochgeladen und funktioniert einwandfrei selbst unter Linux auf mein Raspberry pi klappt das Ding ohne Beanstandung.
Nach ein wenig fummeln konnte ich xpdf auch als xinit prozess im remote Modus starten und per xpdf -remote xxx -exec "nextPage" auch die Folien umschalten und dies sogar mit meiner Fernbedinung, es gibt sogar die Option den Focus auf das eingabefeld zu legen und die Pagenumber einzugeben nur da liegt jetzt das Problem. Leider kann ich trotz dieser guten Unterstützung von xpdf keine Zahlen an den remote schicken also bleibt nur noch eins und zwar im laufenden Prozess die Tastertureingabe simulieren.
Diese Workflow hat noch einen anderen Grund ich versuche dann mittels Fernbedinung den youtube player meines RaspberryPi anzusprechen, ich konnte schon einmal einen kleinen erfolg Feiern indem ich die Zahl an die Konsole geschickt habe trotzdem nimmt das python Programm yt die eingabe nicht entgegen.

Ich hoffe ich konnte den Zusammenhang meiner Bemühungen Erklären und vielleicht findet sich sogar eine klärung für diese herausforderung.
Zuletzt geändert von Debian_anwaerter am 24.08.2014 13:21:48, insgesamt 1-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Sende Keycodes an laufenden Prozess

Beitrag von Cae » 17.08.2014 01:31:01

Wenn du ohnehin X am Start hast, wuerde ich xte aus Debianxautomation verwenden, um Keys zu senden. xpdf schaut vermutlich gar nicht auf stdin; gedrueckte Tasten in einem X-Fenster landen da vermutlich nicht drin.

Abgesehen davon sieht die EOF-Konstruktion ziemlich kaputt aus und duerfte so nicht funktionieren. Falls doch, wuerde durch die erste Zeile echo auf stdin Daten erhalten, die entweder die zweite Zeile (und wo das "schliessende" EOF ohne Zeug drumrum fehlt) oder gar nichts enthaelt. Die zweite Zeile wiederum wuerde eine leere Datei EOF anlegen und eine Datei unter /proc/ auf Groesse null setzen... was aber auch nicht funktioniert, weil das ein Symlink auf ein character device ist, welches keine reelle Groesse hat.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Debian_anwaerter
Beiträge: 76
Registriert: 08.08.2006 17:43:16
Lizenz eigener Beiträge: MIT Lizenz

Re: Sende Keycodes an laufenden Prozess

Beitrag von Debian_anwaerter » 17.08.2014 09:22:02

Guten Morgen,
du hast auch recht die erste Zeile sieht sehr verkrüppelt aus und diese funktioniert auch so nicht, aber die anderen zwei Zeilen funktionieren schon bzw wenn ich den newline Charakter mitgebe

Code: Alles auswählen

echo -e "1 \015" > /proc/xxx/fd/0
bekomme ich auf der Nachbarkonsole meines RaspberryPi diese Ausgabe zu gesicht. Das ganze hatte ich gerade auch an meinen Mint system getestet aber da funktioniert diese Methode leider garnicht.

Gibt es vielleicht auch eine Variante für die Konsole wie ich keycode senden kann? Wie gesagt eigentlich wollte ich mein System erweitern das ich auch später das Konsolenprogramm "yt" per Fernbedinung benutzen kann. Wenn es sowas gibt könnte man ja auch Konsolen Programm auf der einen VT starten und so tun als würden die auf der anderen Konsole ausgeführt werden. Mein Pi läuft über hdmi und mit Festplatte neben meinen TV Gerät und ich greife nur per remote Konsole auf diesen zu.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Sende Keycodes an laufenden Prozess

Beitrag von Cae » 17.08.2014 14:54:19

Debian_anwaerter hat geschrieben:bekomme ich auf der Nachbarkonsole meines RaspberryPi diese Ausgabe zu gesicht.
Das ist nicht so wirklich unerwartet, aber bei deinem xpdf-Problem hilft es dir nicht weiter... hast du meinen ersten Absatz ueberhaupt gelesen? Damit ist eigentlich der Rest deines Folgeposts beantwortet.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Debian_anwaerter
Beiträge: 76
Registriert: 08.08.2006 17:43:16
Lizenz eigener Beiträge: MIT Lizenz

Re: Sende Keycodes an laufenden Prozess

Beitrag von Debian_anwaerter » 17.08.2014 18:57:59

Hallo,
also das Problem mit mein xpdf, konnte ich dank xautomation lösen. Musste dabei zwar auch ein wenig tricksen aber klappt alles super. Mit der einen Fernbedinung kann ich nun die PDF Dateien auswählen und mit der anderen hangle ich mich nun durch. Die Idee ging bei mir noch weiter habe mir jetzt ein kleines Script gebaut mit welchen ich die RSS Feeder von Heise.de auslesen kann und in eine pdf Datei umwandeln kann.
Programme die gebraucht werden xmlstarlet und wkhtmltopdf

Code: Alles auswählen

#!/bin/bash
# Die Datei news.rdf muss mittels wget oder curl heruntergeladen werden
#xmlstarlet sel -T -t -v //link news.rdf > url
#xmlstarlet sel -T -t -v //title news.rdf > name


DATUM="heise_"$(date +\%Y\%m\%d)
mkdir /foobar/$DATUM
#Zähle die Zeilen
COUNT=$(sed -n '$=' url)
#löscht alle leerzeilen
$(sed 's/ //g' name > namev2)

for i in `seq 2 $COUNT`; do
        DIEURL=$(sed -n $i'p' url)
        DERNAME=$(sed -n $i'p' namev2)
#Für das Programm wkhtmltopdf muss vorher der xserver mit startx oder xinit gestartet sein
        wkhtmltopdf $DIEURL $DERNAME".pdf"
        echo $i
        date
        sleep 2
done
mv *.pdf /foobar/$DATUM
Vielleicht hilft es ja dem einen oder anderen auch weiter :o

Ich finde es aber immernoch schade das es kein Programm für die VT gibt die Tastendrücke übergibt, mit xautomation funktioniert das ganze ja nicht oder hatte ich das sogar falsch gelesen?

Antworten