Bir basım betiğinden yazmayı simüle etmek için giriş daemonuna tuş vuruşlarını enjekte etmeye çalışıyorum. Bu mümkün mü ve eğer öyleyse, bunu nasıl başarabilirim?
Bir basım betiğinden yazmayı simüle etmek için giriş daemonuna tuş vuruşlarını enjekte etmeye çalışıyorum. Bu mümkün mü ve eğer öyleyse, bunu nasıl başarabilirim?
Yanıtlar:
X düzeyinde çalışıyorsanız ( Gilles'un sorusunda olduğu gibi ), o zaman xdotool kullanın :
xdotool key KEYSTROKE_SPECIFIER
KEYSTROKE_SPECIFIER "a" veya "F2" veya "control + j" gibi bir şey olabilir.
EDIT: Gilles sorusuna cevabını kaçırdım, üzgünüm. Bu cevabı burada X davası için bir çözüm olarak bırakacağım.
xte
aynı seviyede çalışıyor.
uinput
Sürücüyü kullan . Bunun bir faydası olduğunu sanmıyorum; Biraz C kodu yazmanız veya uyarlamanız gerekecek. Kısaca:
#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);
Daha eksiksiz referanslar:
Anahtarları gönderilebilen pencereli X programlarıyla çalışmıyorsanız, muhtemelen expect
bir kullanıcı terminalini kontrol ediyormuş gibi diğer etkileşimli kabuk programlarını çalıştırmak için kullanışlı ve yapılandırılabilir bir program arıyorsunuz . Farklı girdilere sahip çeşitli çıktılara cevap vermek için programlı yanıtlar ayarlayabilirsiniz.
Bunu yapan bir Python kodu yazdım. Açık kaynaklı projemde bulabilirsiniz.
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
Bu modülü root olarak bir script olarak çalıştırırsanız, bir demoyu çalışırken görebilirsiniz.
Bu temel işlevsellik, gömülü bir sistem (Android) için daha somut bir uygulama sağlayan powerdroid adlı başka bir proje için genişletildi.
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py