struct input_event結構體是linux輸入子系統的嚮應用層傳遞的接口。操作/dev/input/event1文件,寫入個input_event結構體就可以模擬按鍵的輸入。
#inlcude <linux/input.h>
struct input_event {
struct timeval time;//按鍵時間
__u16 type;//類型
__u16 code;//需模擬成的按鍵
__s32 value;//按下或釋放
};
type:
#define EV_SYN 0x00
#define EV_KEY 0x01 //按鍵
#define EV_REL 0x02 //相對座標(軌跡球)
#define EV_ABS 0x03 //絕對座標
#define EV_MSC 0x04 //其他
#define EV_SW 0x05
#define EV_LED 0x11 //LED
#define EV_SND 0x12//聲音
#define EV_REP 0x14//repeat
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)
code:
事件類型爲EV_KEY時,該code爲設備按鍵代碼
0~127爲鍵盤上的按鍵代碼,
0x110~0x116 爲鼠標上按鍵代碼, 其中0x110(BTN_ LEFT)爲鼠標左鍵, 0x111(BTN_RIGHT)爲鼠標右鍵, 0x112(BTN_ MIDDLE)爲鼠標中鍵.
其它代碼含義請參看include/linux /input.h文件.
事件的類型代碼爲EV_REL,該code爲軌跡的類型.
0x00:指示鼠標的X軸方向 REL_X
0x01:指示鼠標的Y軸方向REL_Y
0x08:指示鼠標中輪子方向REL_WHEEL
value:
事件的類型代碼是EV_KEY時,按下值爲1,釋放值爲0
事件的類型代碼是EV_ REL時,value的正數值和負數值分別代表兩個不同方向的值.