Ich versuche, Tastatureingaben in den Eingabedämon einzufügen, um die Eingabe aus einem Bash-Skript zu simulieren. Ist das möglich, und wenn ja, wie kann ich das erreichen?
Ich versuche, Tastatureingaben in den Eingabedämon einzufügen, um die Eingabe aus einem Bash-Skript zu simulieren. Ist das möglich, und wenn ja, wie kann ich das erreichen?
Antworten:
Wenn Sie auf der X-Ebene arbeiten (wie in Gilles 'Frage), verwenden Sie xdotool wie folgt :
xdotool key KEYSTROKE_SPECIFIER
Wobei KEYSTROKE_SPECIFIER so etwas wie "a" oder "F2" oder "control + j" sein kann
EDIT: Ich habe Ihre Antwort auf Gilles 'Frage verpasst, sorry. Ich lasse diese Antwort hier als Lösung für den X-Fall.
xte
arbeitet auf dem gleichen Niveau.
Benutze den uinput
Fahrer. Ich glaube nicht, dass es dafür einen Nutzen gibt. Sie müssen ein bisschen C-Code schreiben oder anpassen. In einer Nussschale:
#include <fcntl.h>
#include <ioctl.h>
#include <unistd.h>
#include <linux/input.h>
#include <linux/uinput.h>
/* Set up a fake keyboard device */
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK); // or /dev/input/uinput
ioctl(fd, UI_SET_EVBIT, EV_KEY);
struct uinput_user_dev uidev = …;
write(fd, &uidev, sizeof(uidev));
ioctl(fd, UI_DEV_CREATE);
/* Send an event */
struct input_event ev = …;
write(fd, &ev, sizeof(ev));
/* Clean up */
ioctl(fd, UI_DEV_DESTROY);
close(fd);
Vollständigere Referenzen:
Wenn Sie NICHT mit X-Programmen mit Fenstern arbeiten, denen Schlüssel gesendet werden können, suchen Sie wahrscheinlich nach expect
einem praktischen und sehr konfigurierbaren Programm zum Ausführen anderer interaktiver Shell-Programme, als ob ein Benutzer das Terminal steuern würde. Sie können programmatische Reaktionen einrichten, um auf verschiedene Ausgaben mit unterschiedlichen Eingaben zu reagieren.
Ich habe einen Python-Code geschrieben, der das macht. Sie finden es in meinem Open Source Projekt.
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
Wenn Sie dieses Modul als Skript als Root ausführen, können Sie eine Demo in Aktion sehen.
Diese Grundfunktionalität wurde für ein weiteres Projekt, powerdroid, erweitert, das eine konkretere Implementierung für ein eingebettetes System (Android) bietet.
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py