Sto cercando di inserire sequenze di tasti nel demone di input in modo da simulare la digitazione da uno script Bash. È possibile, e se sì, come posso farlo accadere?
Sto cercando di inserire sequenze di tasti nel demone di input in modo da simulare la digitazione da uno script Bash. È possibile, e se sì, come posso farlo accadere?
Risposte:
Se stai operando a livello X (come nella domanda di Gilles), usa xdotool in questo modo:
xdotool key KEYSTROKE_SPECIFIER
Dove KEYSTROKE_SPECIFIER può essere qualcosa come "a" o "F2" o "control + j"
EDIT: Ho perso la tua risposta alla domanda di Gilles, scusa. Lascio qui questa risposta come soluzione per l'X-case.
xte
funzioni allo stesso livello.
Usa il uinput
driver. Non penso che ci sia un'utilità per quello; dovrai scrivere o adattare un po 'di codice C. In breve:
#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);
Riferimenti più completi:
Se NON stai lavorando con programmi X con finestre che possono essere inviate chiavi, probabilmente stai cercando expect
un programma pratico e molto configurabile per eseguire altri programmi di shell interattivi come se un utente controllasse il terminale. È possibile impostare risposte programmatiche per rispondere a vari output con input diversi.
Ho scritto del codice Python per farlo. Lo puoi trovare nel mio progetto open source.
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
Se esegui quel modulo come script come root puoi vedere una demo in azione.
Questa funzionalità di base è stata estesa per un altro progetto, powerdroid, che fornisce un'implementazione più concreta per un sistema incorporato (Android).
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py