Bash 스크립트에서 입력을 시뮬레이션하기 위해 입력 데몬에 키 입력을 주입하려고합니다. 이것이 가능합니까? 그렇다면 가능하다면 어떻게해야합니까?
Bash 스크립트에서 입력을 시뮬레이션하기 위해 입력 데몬에 키 입력을 주입하려고합니다. 이것이 가능합니까? 그렇다면 가능하다면 어떻게해야합니까?
답변:
Gilles의 질문과 같이 X 수준에서 작업하는 경우 xdotool을 다음 과 같이 사용 하십시오 .
xdotool key KEYSTROKE_SPECIFIER
KEYSTROKE_SPECIFIER는 "a"또는 "F2"또는 "control + j"와 같은 형식 일 수 있습니다.
편집 : Gilles의 질문에 대한 답변을 놓쳤습니다. 죄송합니다. 이 답변을 X-case의 해결책으로 남겨 두겠습니다.
xte
같은 수준에서 작동 한다고 생각 합니다.
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);
보다 완전한 참고 자료 :
나는 그것을하는 파이썬 코드를 썼다. 내 오픈 소스 프로젝트에서 찾을 수 있습니다.
http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
해당 모듈을 루트로 스크립트로 실행하면 데모가 작동하는 것을 볼 수 있습니다.
이 기본 기능은 임베디드 시스템 (Android)에 대한보다 구체적인 구현을 제공하는 다른 프로젝트 인 powerdroid를 위해 확장되었습니다.
http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py