Linux

如何通過 shell 腳本注入擊鍵?

  • March 25, 2014

我正在嘗試將擊鍵注入輸入守護程序,以模擬從 Bash 腳本輸入。這是可能的,如果是這樣,我怎樣才能做到這一點?

如果您在 X 級別操作(如 Gilles 的問題),請像這樣使用xdotool

xdotool key KEYSTROKE_SPECIFIER

其中 KEYSTROKE_SPECIFIER 可以是“a”或“F2”或“control+j”

編輯:對不起,我錯過了你對 Gilles 問題的回答。我將把這個回复留在這裡作為 X 案例的解決方案。

使用uinput驅動程序。我不認為有一個實用程序。您將不得不編寫或改編一些 C 程式碼。簡而言之:

#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);

更完整的參考資料:

引用自:https://unix.stackexchange.com/questions/14879