linux下如何模擬按鍵輸入和模擬滑鼠

2021-08-30 07:29:11 字數 2232 閱讀 3891

檢視/dev/input/eventx是什麼型別的事件, cat /proc/bus/input/devices

裝置有著自己特殊的按鍵鍵碼,我需要將一些標準的按鍵,比如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)

qutoe

linux下如何模擬按鍵輸入和模擬滑鼠

裝置有著自己特殊的按鍵鍵碼,我需要將一些標準的按鍵,比如0 9,x z等模擬成標準按鍵,比如key 0,key z等,所以需要用到按鍵模擬,具體方法就是操作 dev input event1檔案,向它寫入個input event結構體就可以模擬按鍵的輸入了。linux input.h中有定義,這個檔...

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...