【摘要】:输入子系统的主设备号为INPUT_MAJOR。应用程序可以通过通用输入设备edev的/dev/input/eventn节点向输入子系统发送数据或接收来自输入子系统的消息,也可以通过IOCTL命令获取驱动的能力与支持的特性。
输入子系统的主设备号为INPUT_MAJOR。应用程序可以通过通用输入设备edev的/dev/input/eventn节点向输入子系统发送数据(write)或接收(read)来自输入子系统的消息,也可以通过IOCTL命令获取驱动的能力与支持的特性。通用输入设备edev的注册过程在evdev_connect函数中实现:
evdev_fops即/dev/input/eventn节点的文件操作接口:
以evdev_read函数为例说明输入设备的数据读取具体过程:
input_event_to_user函数调用了copy_to_user函数向应用层复制输入事件,每次复制一个input_event:
例10.1 输入子系统IOCTL实例
本例演示输入设备的几个简单的ioctl接口,参考代码如下:
int version;
int fd=open("/dev/input/event1",O_RDONLY);(www.xing528.com)
ioctl(fd,EVIOCGVERSION,&version);//获取版本
struct input_devinfo device_info;
ioctl(fd,EVIOCGID,&device_info);//获取设备信息
char name[256]="Unknown";
ioctl(fd,EVIOCGNAME(sizeof(name)),name)//获取名称
uint8_t rel_bitmask[REL_MAX/8+1];
ioctl(fd,EVIOCGBIT(EV_REL,sizeof(rel_bitmask))//获取支持的鼠标特性
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。