Tôi đang cố gắng đưa tổ hợp phím vào trình nền đầu vào để mô phỏng việc gõ từ tập lệnh Bash. Điều này là có thể, và nếu vậy, làm thế nào tôi có thể làm cho nó xảy ra?
Tôi đang cố gắng đưa tổ hợp phím vào trình nền đầu vào để mô phỏng việc gõ từ tập lệnh Bash. Điều này là có thể, và nếu vậy, làm thế nào tôi có thể làm cho nó xảy ra?
Câu trả lời:
Nếu bạn đang hoạt động ở cấp X (như trong câu hỏi của Gilles), thì hãy sử dụng xdotool như vậy:
xdotool key KEYSTROKE_SPECIFIER
Trong đó KEYSTROKEinksECIFIER có thể là một cái gì đó như "a" hoặc "F2" hoặc "control + j"
EDIT: Tôi đã bỏ lỡ câu trả lời của bạn cho câu hỏi của Gilles, xin lỗi. Tôi sẽ để lại phản hồi này ở đây như là một giải pháp cho trường hợp X.
xte
hoạt động ở cùng cấp độ.
Sử dụng uinput
trình điều khiển. Tôi không nghĩ rằng có một tiện ích cho việc đó; bạn sẽ phải viết hoặc điều chỉnh một chút mã C. Tóm lại:
#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);
Tài liệu tham khảo đầy đủ hơn:
Nếu bạn KHÔNG làm việc với các chương trình X có cửa sổ có thể gửi khóa, có lẽ bạn đang tìm kiếm expect
, một chương trình tiện dụng và rất có thể định cấu hình để chạy các chương trình shell tương tác khác như thể người dùng đang điều khiển thiết bị đầu cuối. Bạn có thể thiết lập các phản hồi theo chương trình để đáp ứng đầu ra khác nhau với các đầu vào khác nhau.
Tôi đã viết một số mã Python làm điều đó. Bạn có thể tìm thấy nó trong dự án nguồn mở của tôi.
http://code.google.com.vn/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py
Nếu bạn chạy mô-đun đó dưới dạng tập lệnh với quyền root, bạn có thể thấy bản demo đang hoạt động.
Chức năng cơ bản này đã được mở rộng cho một dự án khác, powerdroid, cung cấp triển khai cụ thể hơn cho một hệ thống nhúng (Android).
http://code.google.com.vn/p/powerdroid/source/browse/trunk/src/droid/devices.py