首页 理论教育 Linux驱动实战:输入设备应用

Linux驱动实战:输入设备应用

时间:2023-10-19 理论教育 版权反馈
【摘要】:输入子系统的主设备号为INPUT_MAJOR。应用程序可以通过通用输入设备edev的/dev/input/eventn节点向输入子系统发送数据或接收来自输入子系统的消息,也可以通过IOCTL命令获取驱动的能力与支持的特性。

Linux驱动实战:输入设备应用

输入子系统的主设备号为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))//获取支持的鼠标特性

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈