Tôi cho rằng bạn có nghĩa là "ứng dụng X11" - nó không hoàn toàn rõ ràng từ mô tả của bạn về những gì bạn định làm. Đoạn mã dưới đây sẽ gửi mã khóa "tạm dừng" tới ứng dụng hiện đang tập trung vào đầu vào bàn phím trong X11 bằng cách sử dụng phần mở rộng XTest - từ những gì tôi đã đọc đây là cách tương thích nhất để "giả" các sự kiện bàn phím. Xem nếu bạn có thể áp dụng điều này cho kịch bản của bạn (không có lỗi kiểm tra xem XOpenDisplay đã thành công, để làm cho nó đơn giản hơn).
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
...
Display *display;
unsigned int keycode;
display = XOpenDisplay(NULL);
...
keycode = XKeysymToKeycode(display, XK_Pause);
XTestFakeKeyEvent(display, keycode, True, 0);
XTestFakeKeyEvent(display, keycode, False, 0);
XFlush(display);
Bạn sẽ cần liên kết với -lX11 -lXtst.
Rõ ràng là firefox sẽ cần phải tập trung vào thời điểm đó.
Tuy nhiên, tôi sẽ tò mò muốn biết công việc lớn hơn mà bạn đang cố gắng thực hiện là gì - tôi nghi ngờ có một giải pháp thanh lịch hơn là giả mạo các sự kiện nhấn phím.
Nguồn
2009-08-11 19:54:17
nhận xét phụ về trường hợp sử dụng của riêng tôi cho mã trên: Tôi đã có một bản hack cuối tuần OpenCV cho phép tôi giả phím mũi tên bằng cách di chuyển đầu của tôi trước webcam (để tôi có thể cuộn các /. bài viết và ăn bánh sandwich cùng một lúc :-) –
Tôi muốn sử dụng một người bạn mạnh mẽ griffin để tải lại một iframe :) – Baversjo
Ah, vì vậy nó khá nhiều việc sử dụng tương tự như trường hợp của tôi :) –