[NodeJS] Tastendruck Simulation funtioniert nur teilweise

05/13/2018 16:07 ►Cyrix#1
Hi Leute,
Ich habe auf meinem Pi ein NodeJS Server laufen, der hat unteranderem die Funktion Tastendrucke zu Simulieren. Das funktioniert auch wunderbar, wenn ich das Skript von der Console aus Starte, jedoch soll das ganze beim Start ausgeführt werden.
Ich habe dafür einen Service eingerichtet. Der Server läuft dann auch, aber der Tastendruck wird einfach nicht Simuliert.

Ich habe das Gefühl es könnte daran liegen, dass das Terminal quasi nicht geladen ist o.ä.

Ich hoffe ihr könnt mir weiter helfen.

Viele Grüße,
Jan
05/14/2018 12:15 warfley#2
Quote:
Originally Posted by ►Cyrix View Post
Hi Leute,
Ich habe auf meinem Pi ein NodeJS Server laufen, der hat unteranderem die Funktion Tastendrucke zu Simulieren. Das funktioniert auch wunderbar, wenn ich das Skript von der Console aus Starte, jedoch soll das ganze beim Start ausgeführt werden.
Ich habe dafür einen Service eingerichtet. Der Server läuft dann auch, aber der Tastendruck wird einfach nicht Simuliert.

Ich habe das Gefühl es könnte daran liegen, dass das Terminal quasi nicht geladen ist o.ä.

Ich hoffe ihr könnt mir weiter helfen.

Viele Grüße,
Jan
Natürlich kannst du keine Tastendrücke simulieren. Wenn du das programm als daemon startest ist keine Nutzershell in die du was eintippen kannst.

Generell frage ich mich allerdings warum du tastendrücke simulieren willst, so ein dreckiges gehacke hat auf Linux nichts zu suchen (ist ja kein Windows). Wenn du mit einem anderen prozess (z.B. der Nutzershell) interagieren möchtest, solltest du einfach den prozess als child starten, und dann stdin und stdout mit dup2 zu einem FIFO pipen um mit dem prozess zu kommunizieren. Wahrscheinlich gibt es in Node sogar schon eine Prozessklasse die das für dich übernimmt.

Oder was möchtest du machen? Es gibt garantiert einen einfacheren weg
05/16/2018 10:29 ►Cyrix#3
Quote:
Originally Posted by warfley View Post
Natürlich kannst du keine Tastendrücke simulieren. Wenn du das programm als daemon startest ist keine Nutzershell in die du was eintippen kannst.

Generell frage ich mich allerdings warum du tastendrücke simulieren willst, so ein dreckiges gehacke hat auf Linux nichts zu suchen (ist ja kein Windows). Wenn du mit einem anderen prozess (z.B. der Nutzershell) interagieren möchtest, solltest du einfach den prozess als child starten, und dann stdin und stdout mit dup2 zu einem FIFO pipen um mit dem prozess zu kommunizieren. Wahrscheinlich gibt es in Node sogar schon eine Prozessklasse die das für dich übernimmt.

Oder was möchtest du machen? Es gibt garantiert einen einfacheren weg
Erstmal danke für die Antwort! Das mit der Shell habe ich mir schon gedacht.

Ich möchte Netflix (und bald andere Seiten) von meinem Handy/Laptop aus Steuern. Also Pause/Play, vor-zurückspulen, Maximieren, usw. aktuell habe ich einen Node Server laufen der dann den Tastendruck Simuliert. Ich habe am anfang gedacht, dass man das villeicht ganz einfach mit curl lösen kann, damit kenne ich mich aber leider überhaupt nicht aus.
05/18/2018 00:38 warfley#4
Quote:
Originally Posted by ►Cyrix View Post
Erstmal danke für die Antwort! Das mit der Shell habe ich mir schon gedacht.

Ich möchte Netflix (und bald andere Seiten) von meinem Handy/Laptop aus Steuern. Also Pause/Play, vor-zurückspulen, Maximieren, usw. aktuell habe ich einen Node Server laufen der dann den Tastendruck Simuliert. Ich habe am anfang gedacht, dass man das villeicht ganz einfach mit curl lösen kann, damit kenne ich mich aber leider überhaupt nicht aus.
Ok dafür ist ein Klickbot wahrscheinlich doch das einfachste (ansonsten ein chrome debug server, aber dann wirds kompliziert)

Um deinen Klickbot zum laufen zu bekommen musst du das program in der selben Shell ausführen wie deine Grafische oberfläche. Eine option dafür wäre deine anwendung vom X11 server starten zu lassen (welcher ja in deiner Grafischen Session läuft).

Mit etwas googlen hab ich dazu das gefunden: [Only registered and activated users can see links. Click Here To Register...]

Ich denke damit sollte es funktionieren