linux下获取按键响应事件

linux下获取按键响应事件

ID:8809685

大小:18.89 KB

页数:5页

时间:2018-04-08

linux下获取按键响应事件_第1页
linux下获取按键响应事件_第2页
linux下获取按键响应事件_第3页
linux下获取按键响应事件_第4页
linux下获取按键响应事件_第5页
资源描述:

《linux下获取按键响应事件》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、linux下获取按键响应事件1、问题通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序代码是在unbuntu10.04编译执行通过的2、input_event描述在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构体描述),不再需要关心文件操作接口,因为Input子系统已经完成了文件操作接口linux/input.h这个文件定义了

2、event事件的结构体,API和标准按键的编码等;structinput_event{   structtimevaltime; //按键时间   __u16type;//事件类型   __u16code;//要模拟成什么按键   __s32value;//是按下还是释放};type,指事件类型,常见的事件类型有:EV_KEY,按键事件,如键盘的按键(按下哪个键),鼠标的左键右键(是非击下)等;EV_REL,相对坐标,主要是指鼠标的移动事件(相对位移);EV_ABS,绝对坐标,主要指触摸屏的移动事件code:事件的代码.如果事

3、件的类型代码是EV_KEY,该代码code为设备键盘代码.0~127为键盘上的按键代码关于按键代码的定义,部分如下所示:#defineKEY_RESERVED    0#defineKEY_ESC 1#defineKEY_1   2#defineKEY_2   3#defineKEY_3   4#defineKEY_4   5#defineKEY_5   6#defineKEY_6   7#defineKEY_7   8#defineKEY_8   9#defineKEY_9   10#defineKEY_0   11#def

4、ineKEY_MINUS   12#defineKEY_EQUAL   13#defineKEY_BACKSPACE   14#defineKEY_TAB 15#defineKEY_Q   16#defineKEY_W   17#defineKEY_E   18#defineKEY_R   19#defineKEY_T   20value:事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_REL,value的正数值和负数值分别代表两个不同方向的值.3、相关代码key_sim

5、ulator.cJava代码1.#include2.#include3.#include4.#include5.#include6.intmain()7.intkeys_fd;8.charret[2];9.structinput_eventt;10.keys_fd=open("/dev/input/event2",O_RDONLY);11.if(keys_fd<=0)12.printf("open/dev/input/event2deviceerror!");13.return0;14.while(1)15.if(read

6、(keys_fd,&t,sizeof(t))==sizeof(t))16.if(t.type==EV_KEY)17.if(t.value==0

7、

8、t.value==1)18.printf("key%d%s",t.code,19.(t.value) ? "Pressed" : "Released");20.if(t.code==KEY_ESC)21.break;22.close(keys_fd);23.return0;#include#include#include#include#includeintmain(){ int

9、keys_fd; charret[2]; structinput_eventt; keys_fd=open("/dev/input/event2",O_RDONLY); if(keys_fd<=0)  {   printf("open/dev/input/event2deviceerror!");   return0;  } while(1)  {   if(read(keys_fd,&t,sizeof(t))==sizeof(t))    {     if(t.type==EV_KEY)      if(t.value=

10、=0

11、

12、t.value==1)    {       printf("key%d%s",t.code,           (t.value) ? "Pressed":"Released");     if(t.code==KEY_ESC)       break;   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。