一、linux input 子系统中,每个输入设备可以建立一个devices,如插入USB mouse的时候会建立,在系统、dev/input目录下就会生成一个对应的device,如:/dev/input/event0,可以通过读取device获取输入设备的信息; 具体可以访问 http://blog.sina.com.cn/s/blog_602f87700101dno6.html
0.1:关键结构体input_event信息:
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_LED 0x11 LED灯设备
define EV_SND 0x12 蜂鸣器,输入声音
define EV_REP 0x14 允许重复按键类型
define EV_PWR 0x16 电源管理事件
define EV_FF_STATUS 0x17
define EV_MAX 0x1f
define EV_CNT (EV_MAX+1)
sdk封装的解决思路;
type: EV_REL鼠标设备 0x02
code : rel_x 0x00 表示x轴方向 rel_y 0x01 表示y轴方向 (一次鼠标移动会产生两个input event事件)
value: EV_REL type下有正负表示方向
介绍键盘的code
Type为EV_KEY时,value: 0表示按键抬起。1表示按键按下。(4表示持续按下等?)。
问题:因为会出现一次鼠标移动就有两个事件产生,所以就要判断这一时刻到底是哪个事件
方法:
鼠标事件:
上1
下0
左2
右3
键盘事件:
上103
下108
左105
右106
停28
蓝牙键盘
1:2
2:3
3:4
4:5
5:6
w:17
a:30
s:31
d:32