触摸屏接口
转自:http://book.51cto.com/art/201304/390529.htm在Linux系统中,所有的输入设备(键盘、鼠标、触摸屏)都使用统一的输入系统进行管理。每个/dev/input/eventX都对应着一个输入设备。这些输入设备可以通过对应的/sys/class/ input/inputX/name文件查询到对应的设备名称。在/proc/bus/input/devic
转自:http://book.51cto.com/art/201304/390529.htm
在Linux系统中,所有的输入设备(键盘、鼠标、触摸屏)都使用统一的输入系统进行管理。每个/dev/input/eventX都对应着一个输入设备。这些输入设备可以通过对应的/sys/class/ input/inputX/name文件查询到对应的设备名称。在/proc/bus/input/devices中有所有设备的详细信息。
当应用程序打开/dev/input/eventX设备后,可以使用read函数实现输入事件的读取。在linux/input.h中定义了输入事件的结构体:
- struct input_event {
- struct timeval time; //时间戳
- __u16 type; //事件类型
- __u16 code; //事件代码
- __s32 value; //事件的值
- };
表4-14中介绍了事件类型的定义及含义,触摸屏使用的事件类型为EV_ABS。
表4-14 事件类型定义
事 件 类 型 | 含 义 | 事 件 类 型 | 含 义 |
EV_SYN
|
同步时间
|
EV_LED
|
LED
|
EV_KEY
|
按键事件
|
EV_SND
|
声音
|
EV_REL
|
相对坐标(鼠标)
|
EV_REP
|
重复
|
EV_ABS
|
绝对坐标(触摸屏)
|
EV_FF
|
力反馈
|
EV_MSC
|
其他
|
EV_PWR
|
电源键
|
事件代码的含义也不同,见表4-15。
表4-15 事件代码的含义
事件类型 | 事件代码的含义 |
EV_KEY
|
键值
|
EV_REL
|
轨迹类型(X轴方向或Y轴方向)
|
EV_ABS
|
坐标类型(X轴坐标或Y轴坐标)
|
事件值的含义见表4-16。
表4-16 事件值的含义
事件类型 | 事件值的含义 |
EV_KEY
|
1表示按键按下;0表示按键抬起
|
EV_REL
|
鼠标偏移量(X轴偏移或Y轴偏移)
|
EV_ABS
|
坐标值(X轴坐标或Y轴坐标)
|
在Linux的GUI系统中,会利用上述接口对所有的输入设备进行管理。应用程序可以通过在GUI中注册监听器、在消息队列中增加对应事件的处理函数,完成输入设备事件的处理。
应用程序也可以通过write函数,向设备写入input_event事件,实现对输入设备事件的模拟。
更多推荐
所有评论(0)