裝置有著自己特殊的按鍵鍵碼,我需要將一些標準的按鍵,比如0-9,x-z等模擬成標準按鍵,比如key_0,key-z等,所以需要用到按鍵模擬,具體方法就是操作/dev/input/event1檔案,向它寫入個input_event結構體就可以模擬按鍵的輸入了。
linux/input.h中有定義,這個檔案還定義了標準按鍵的編碼等
struct input_event ;
code:
事件的**.如果事件的型別**是ev_key,該**code為裝置鍵盤**.**植0~127為鍵盤上的按鍵**,0x110~0x116 為滑鼠上按鍵**,其中0x110(btn_ left)為滑鼠左鍵,0x111(btn_right)為滑鼠右鍵,0x112(btn_ middle)為滑鼠中鍵.其它**含義請參看include/linux/input.h檔案. 如果事件的型別**是ev_rel,code值表示軌跡的型別.如指示滑鼠的x軸方向
rel_x(**為0x00),指示滑鼠的y軸方向rel_y(**為0x01),指示滑鼠中輪子方向rel_wheel(**為0x08).
type:
ev_key,鍵盤
ev_rel,相對座標
ev_abs,絕對座標
value:
事件的值.如果事件的型別**是ev_key,當按鍵按下時值為1,鬆開時值為0;如果事件的型別**是ev_ rel,value的正數值和負數值分別代表兩個不同方向的值.
/** event types
*/#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)
1。模擬按鍵輸入
//其中0表示釋放,1按鍵按下,2表示一直按下
//0 for ev_key for release, 1 for keypress and 2 for autorepeat.
void simulate_key(int fd,int value)
}2。模擬滑鼠輸入(軌跡球)
void simulate_mouse(int fd,char buf[4])
滑鼠和鍵盤檔案開啟方法:
int fd_kbd; // /dev/input/event1
int fd_mouse; //dev/input/mouse2
fd_kbd = open("/dev/input/event1",o_rdwr);
if(fd_kbd<=0)
fd_mouse = open("/dev/input/event3",o_rdwr); //如果不行的話,那試試/dev/input/mice
if(fd_mouse<=0)
}/dev/input/mice是滑鼠的抽象,代表的是滑鼠,也許是/dev/input/mouse,/dev/input/mouse1,或者空,
這個檔案一直會存在。
這裡你也許會問,我怎麼知道/dev/input/eventx這些事件到底是什麼事件阿,是滑鼠還是鍵盤或者別的,
eventx代表的是所有輸入裝置(input核心)的事件,比如按鍵按下,或者滑鼠移動,或者遊戲遙控器等等,
在系統檢視的方法是 cat /proc/bus/input/devices 就可以看到每個eventx是什麼裝置的事件了。
ps: 在gtk中用的話,可以參考下gtk_main_do_event這個函式
static void simulate_key(gtkwidget *window,int keyval,int press)
linux下如何模擬按鍵輸入和模擬滑鼠
檢視 dev input eventx是什麼型別的事件,cat proc bus input devices 裝置有著自己特殊的按鍵鍵碼,我需要將一些標準的按鍵,比如0 9,x z等模擬成標準按鍵,比如key 0,key z等,所以需要用到按鍵模擬,具體 方法就是操作 dev input event...
adb模擬按鍵輸入
主要用到的命令是 imput keyevent keycode含義3 home 鍵 4返回鍵 5開啟撥號應用 6結束通話 24增加音量 25降低音量 26電源鍵 27拍照 需要在相機應用裡 64開啟瀏覽器 82菜單鍵 8586 8788 122移動游標到行首或列表頂部 123移動游標到行末或列表底部...
Linux 下模擬鍵盤輸入
linux 下模擬鍵盤輸入 基於gtk 與 fakekey 將模擬鍵盤與pc機鍵盤鏈結在一起 include include include include display disp fakekey fk gtkwidget win null static char numkeyboard disp...