input之按键输入
Posted 孤~狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了input之按键输入相关的知识,希望对你有一定的参考价值。
通过直接操作驱动来监控键盘,只要程序一旦在后台启动,无论在任何页面都可以监控到按键的数值。
步骤如下:
1.找到键盘挂在点:有两种方法
方法一:在 /dev/input路径下通过 cat even..(1,2,3,4.。)打印操作,并按下键盘看哪个出现的不是回写(乱码状态),就是键盘挂载点,我的是event1;鼠标是event2;
方法二:在命令行中输入 cat /proc/bus/input/devices 查看设备对应的结点(文件)
2.打开键盘文件:
#define DEV "/dev/input/event1"
int keyFd;
keyFd=open(DEV,RDONLY);
3.读键盘数据
问:读的数据应该以什么类型存放?
解:所有的输入设备都公用一个头文件,即共用这一个框架,头文件为<linux/input.h>,
/////////////////////////////这是头文件中的结构体,不用写////////////////////////////////////////////////////////////////////////////
struct input_event {
struct timeval time;
__u16 type;//按键类型
—u16code;//按键值
__s32 value;//按下为1,长按为2,松开为0
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
int ret; struct input_event ev;
ret=read(devFd,&ev,sizeof(ev));
每一次从键盘读到的值都存在这样的一个结构体中;
5.访问数据
通过结构体变量ev可以访问数据。
以上是关于input之按键输入的主要内容,如果未能解决你的问题,请参考以下文章
Android R input 之 InputManagerService 的建立
Android R input 之 InputManagerService 的建立
linux输入子系统(input subsystem)之evdev.c事件处理过程