linux捕获鼠标点击事件文件,linux获得键盘鼠标事件,模拟键盘鼠标按键

linux中键盘鼠标等输入设备通过input子系统实现设备驱动,驱动程序完成向系统报告输入事件,input子系统完成了文件操作接口

linux/input.h定义了输入事件结构体 api 和 按键定义等

struct input_event {

struct

timeval time;

__u16 type;

__u16 code;

__s32

value;

};

type:类型

#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

#define EV_SND                  0x12

#define EV_REP                  0x14

#define EV_FF                   0x15

#define EV_PWR                  0x16

#define EV_FF_STATUS            0x17

#define EV_MAX                  0x1f

code:事件码

#define KEY_RESERVED            0

#define KEY_ESC                 1

#define KEY_1                   2

#define KEY_2                   3

#define KEY_3                   4

#define KEY_4                   5

#define KEY_5                   6

#define KEY_6                   7

#define KEY_7                   8

#define KEY_8                   9

#define KEY_9                   10

#define KEY_0                   11

#define KEY_MINUS               12

#define KEY_EQUAL               13

#define KEY_BACKSPACE           14

#define KEY_TAB                 15

#define KEY_Q                   16

。。。。。。

#define REL_X                   0x00

#define REL_Y                   0x01

。。。。。。

value:事件值

获取输入:

点击(此处)折叠或打开

#include

#include

#include

#include

#include

int main()

{

int fd;

struct input_event event;

fd = open("/dev/input/event0", O_RDONLY); //打开输入文件根据实际情况

if(fd <= 0)

{

printf("open device error\n");

return 0;

}

while(1)

{

if(read(fd, &event, sizeof(event)) == sizeof(event))

{

if (event.type == EV_KEY)

if (event.value == 0 || event.value == 1)

{

printf("key %d %s\n", event.code, (event.value) ? "Pressed" : "Released");

if(event.code == KEY_ESC)

break;

}

}

}

close(fd);

return 0;

}

"/dev/input/event0" 键盘事件,查看  /proc/bus/input/devices 可以确定各设备对应的设备文件

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41

N: Name="AT Translated Set 2 keyboard"

P: Phys=isa0060/serio0/input0

S: Sysfs=/class/input/input0

H: Handlers=kbd event0//键盘对应event0

B: EV=120013

B: KEY=402000000 3802078f840d001 feffffdfffefffff fffffffffffffffe

B: MSC=10

B: LED=7

I: Bus=0011 Vendor=0002 Product=0005 Version=0000

N: Name="ImPS/2 Generic Wheel Mouse"

P: Phys=isa0060/serio1/input0

S: Sysfs=/class/input/input1

H: Handlers=mouse0 event1//鼠标event1

B: EV=7

B: KEY=70000 0 0 0 0

B: REL=103

把structinput_event 写入 /dev/input/event0 可以模拟键盘输入

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值