Linux input子系统简介

Linux input子系统,负责上报输入事件,例如KEY,TP,鼠标键盘等。
cat /proc/bus/input/devices来显示当前连接的输入设备列表。
按键中断过来后,包括按下和抬起,进入中断服务函数,中断函数中开一个定时器10ms,10ms消抖后在定时器中去读取gpio口,gpio_get_value(),然后再去上报事件。input_report_key(struct input_dev *dev, unsigned int code, bool value) 上报哪一个按键code以及按键事件value。input_sync()上报一个同步事件,这一步必须要做,对应下面打印出来的同步类事件

打开/dev/input/event0设备文件
调用read来读取数据,如果没有数据会进入休眠,当有数据读取时,应用程序被唤醒去读取数据。
每一次read操作都是struct input_event结构体类型数据,这个结构体定义在<linux/input.h>里面。
struct input_event
{
_u16 type; //0代表同步类事件,1代表按键类事件,4代表其他杂类事件
_u16 code; //表示该类事件的哪一个具体事件,比如键盘A,B,C,D按键。我们可以定义扫描键为117
_s32 value; //按键按下1,按键松开0
};
读取数据如下:
type:1 code:117 value:1 //表示扫描键按下
type:0 code:0 value:0 //同步类事件,表示本轮数据已经完整,报告同步
type:1 code:117 value:0 //表示扫描键抬起
type:0 code:0 value:0 //同步类事件,表示本轮数据已经完整,报告同步
type:1 code:117 value:1
type:0 code:0 value:0
type:1 code:117 value:0
type:0 code:0 value:0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴子坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值