因為公司智慧型終端放置在外面,有乙個像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...