当前位置: 技术问答>linux和unix
Linux 下模拟键盘发送消息
来源: 互联网 发布时间:2016-09-09
本文导语: 比如要发送方向键什么,在程序中模拟,不是通过键盘来的?我知道windows里是SendMessage但不知道linux下如何,还请大家不吝赐教!感激万分 | 可以写一个字符设备的驱动,用到linux的input子系统...
比如要发送方向键什么,在程序中模拟,不是通过键盘来的?我知道windows里是SendMessage但不知道linux下如何,还请大家不吝赐教!感激万分
|
可以写一个字符设备的驱动,用到linux的input子系统模拟。向这个设备文件写数据就向linux报告一个input_event
|
如果想在应用层做的话,就考虑用消息队列来模拟吧
|
XGetInputFocus(kw->display, &(kw->focus), &revert_to);
unsigned int a = XKeysymToKeycode(kw->display, kw->keysym);
XTestFakeKeyEvent(kw->display, a, true,0 );
XTestFakeKeyEvent(kw->display, a, false,0 );
//kw struct里成员定义:
Display* display;
Window focus;
XKeyEvent key_press;
KeySym keysym;
|
刚搜出来个完整代码,上面代码是我一个程序里的一部分,有点乱,你看这个吧:
//numlock.c
#include
#include
int main(void) {
Display* disp = XOpenDisplay( NULL );
if( disp == NULL )
return 1;
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Num_Lock), True, CurrentTime );
XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_Num_Lock), False, CurrentTime );
XCloseDisplay( disp );
return 0;
}