epoll和input子系统实现input事件分发

本文介绍如何使用epoll监控input子系统事件,以实现输入设备(如键盘、鼠标)的事件分发。通过编写Dispatcher,监控KeyBoard和鼠标事件,并通过信号机制处理边沿触发。项目代码可从提供的链接获取。
摘要由CSDN通过智能技术生成

前言

在嵌入式开发中,按键和触摸板等输入系统很常见,其驱动文件位于/dev/input下,以event开头,后接数字。epoll是2.6内核引入的I/O多路复用的新的高效的接口,我在以前的博客中,使用其实现了一个聊天室服务器程序。这里我们使用其来监控input子系统事件。
在嵌入式软件开发中,小的程序,我们可以直接使用I/O接口来获得外部的时间输入,而如果对于一个大型的嵌入式软件系统,其会被很多地方用到,那么就需要进行相应的封装处理,对外提供统一的接口。

Dispatcher

本篇我们就来实现我们自己的Dispatcher,开始的时候我只监控KeyBoard的事件,所以叫KeyDispatcher,后来加入了鼠标,所以不要奇怪类型。

查看本机的Input设备

使用cat /pro/bus/input/devices命令,我得到了我的键盘和鼠标的驱动文件名。

I: Bus=0003 Vendor=24ae Product=2000 Version=0101
N: Name="RAPOO RAPOO 2.4G Wireless Device"
P: Phys=usb-0000:00:1d.0-1.3/input1
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.1/input/input15
U: Uniq=
H: Handlers=kbd mouse0 event7 
B: PROP=0
B: EV=1f
B: KEY=4837fff072ff32d bf54444600000000 1f0001 20f908b17c000 677bfad941dfed 9ed68000004400 10000002
B: REL=1c3

我使用的是RAPOO的无线鼠标,H: Handlers=kbd mouse0 event7mouse0,为/dev/input目录下的event7文件。

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4 
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
B: MSC=10
B: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值