時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
1? event device
in /dev/input/event?
cat data from /dev/input/event? the data format is :
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
e.g :
xx xx xx xx yy yy yy yy tt tt cc cc vv vv vv vv
xx is usec
yy is sec
tt is type
cc is key code
vv is value, might be it means keyup or keydown
for mouse event, you can get the same message format
xx, yy is the same as keyboard
tt is EV_REL, it means the value feild is relative distance;
cc is REL_X or REL_Y
vv is the value of relative distance
2 register input_dev
/**************************
for virtual mouse
**/
static int? vkm_vmouse_register(void)
{
struct input_dev *vmouse_dev;
vmouse_dev = input_allocate_device();
if (!vmouse_dev)
return -ENOMEM;
vmouse_dev->name = "VMouse ";
vmouse_dev->phys = "xxmouse/input1";
vmouse_dev->id.bustype = BUS_HOST;
vmouse_dev->id.vendor = 0x0001;
vmouse_dev->id.product = 0x0002;
vmouse_dev->id.version = 0x0100;
vmouse_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
vmouse_dev->keybit[BIT_WORD(BTN_MOUSE)] =
BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_RIGHT);
vmouse_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y);
/* error check */
error = input_register_device(vmouse_dev);
if (error) {
input_free_device(vmouse_dev);
return error;
}
}
/**************************
for virtual keyboard
**/
static int? vkm_vkbd_register(void)
{
int i, error;
struct input_dev *vkbd_dev;
vkbd_dev = input_allocate_device();
if (!vkbd_dev)
return -ENOMEM;
vkbd_dev->name = "VKBD Keyboard";
vkbd_dev->phys = "atakbd/input0";
vkbd_dev->id.bustype = BUS_HOST;
vkbd_dev->id.vendor = 0x0001;
vkbd_dev->id.product = 0x0001;
vkbd_dev->id.version = 0x0100;
vkbd_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
vkbd_dev->keycode = atakbd_keycode;
vkbd_dev->keycodesize = sizeof(unsigned char);
vkbd_dev->keycodemax = ARRAY_SIZE(atakbd_keycode);
for (i = 1; i < 0x72; i++) {
set_bit(atakbd_keycode[i], vkbd_dev->keybit);
}
/* error check */
error = input_register_device(vkbd_dev);
if (error) {
input_free_device(vkbd_dev);
return error;
}
return 0;
}
send keyboard event to input handler like this:
input_report_key(vkbd_dev,KEY_A,0);
input_sync(vkbd_dev);
and send mouse event to input handler like this:
input_report_rel(vmouse_dev, REL_X, 10);
input_report_rel(vmouse_dev, REL_Y, 10);
input_sync(vmouse_dev);
關鍵詞標簽:linux,input,subsyste
相關閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內存型號 linux tc實現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關機、重啟、注銷 命令 查看linux服務器硬盤IO讀寫負載