利用虛擬鍵盤驅動uinput向系統傳送按鍵指令

2021-06-19 23:19:46 字數 2180 閱讀 6771

因為公司智慧型終端放置在外面,有乙個像atm機器一樣的密碼鍵盤.原本是作為銀行卡密碼輸入確認的。

現在為了方便維護,一些簡單的系統操作,就利用這個密碼鍵盤來呼叫編寫好的sh指令碼。

但是因為終端機並沒有插鍵盤,所以沒有輸入裝置,這個時候只能利用與密碼鍵盤通訊的支付程式,向系統傳送按鍵指令。

所以,用到了uinput虛擬輸入驅動,簡單的說:用它可以在使用者空間實現輸入裝置,向系統中注入輸入事件。

下面,是我寫好的輸入按鍵的程式。

1.將下面的**儲存成 keyinput.c

2.編譯:

$ gcc keyinput.c -o keyinput

3.載入 uinput驅動

$ sudo modprobe uinput

$ lsmod |grep uinput

4.將編譯好的檔案放到/usr/sbin/中

$ sudo cp keyinput /usr/sbin/

$ sudo chmod 755 /usr/sbin/keyinput

5.示例:向linux桌面系統傳送ctrl+alt+d 清遮蔽指令

$ keyinput  29 56 32

6.keyinput 引數說明:後面跟著的引數全是ascii碼,對應的鍵盤ascii碼在 /usr/include/linux/input.h 中可以查詢。

/*//

//    simulated keyboard input program    //

//                by:0x001                //

//*/

#include

#include

#include

#include

#include

#include

#include

#include

#define die(str, args...) do while(0)

int fd;

struct uinput_user_dev uidev; // uinput device structure

struct input_event     ev;  // input device structure

/* setup the uinput device */

void setup_uinput_device()

ioctl(fd, ui_set_evbit, ev_rel);

ioctl(fd, ui_set_relbit, rel_x);

ioctl(fd, ui_set_relbit, rel_y);

/* create input device into input sub-system */

write(fd, &uidev, sizeof(uidev));

if(ioctl(fd, ui_dev_create) < 0)

die("error: create uinput device");

}// simulated keyboard input

void simulate_key(int keycode, int keyvalue)

else

}void simulate_key_end()

//  check the key is control key

int check_valid_control_key(int key)

;int len = sizeof(control_key) / sizeof(control_key[0]);

int i;

int ret = 0;

for ( i = 0; i < len; i++)

}return ret;

}int main(int argc, char *argv)

setup_uinput_device();

sleep(1);

int key;

int i;

for (i=1; i < argc; i++)

}for (i=1; i < argc; i++)

}simulate_key_end();

if(ioctl(fd, ui_dev_destroy) < 0)

die("error: ioctl");

close(fd);

return 0;

}

DD驅動 虛擬鍵盤 虛擬滑鼠

最簡單好用的驅動級虛擬滑鼠虛擬鍵盤 支援 winxp win2003 win2008 vista win7 32位和64位作業系統。適用 vb6,delphi,vc,bc,vb.net,c 易語言等各種程式語言寫的應用程式呼叫。一鍵安裝和解除安裝,實現模擬按鍵操作只需載入dd入口檔案dd entry...

虛擬鍵盤驅動程式

文章出處 作者 李先靜 前 段時間寫乙個程式,要向系統中注入按鍵事件,我又不想信賴於具體的gui,就寫乙個虛擬鍵盤裝置驅動程式,感覺挺好用的,不過後來發現linux其實有一 個uinput驅動程式實現了類似的功能。幸好後來才發現uinput這玩意兒,否則就沒有機會去寫了這個程式了,有時真是寧願知識面...

Python呼叫驅動級按鍵 DD虛擬鍵盤

開發dnf連點功能時,常規的pymouse pykeyboard無效 猜測原因是dnf遮蔽了模擬訊號 嘗試使用驅動級按鍵 比如dd虛擬鍵盤虛擬滑鼠 這個官方例子裡就有python下如何呼叫的例子 from ctypes import import time 註冊dd dll,64位python用64...