Linux输入事件编码

这篇博客详细介绍了Linux输入协议中事件类型和编码的使用,包括EV_SYN、EV_KEY、EV_REL、EV_ABS等,以及它们在不同输入设备如鼠标、触摸屏、触控板中的应用。通过对事件类型的解析,解释了如何处理多点触控、相对坐标和绝对坐标等输入数据。
摘要由CSDN通过智能技术生成

此文章为个人翻译英文文档的产物,仅当做个人笔记使用,不喜勿喷!!
对于翻译内容有强迫症的读者请勿阅读此文档!!
阅读过程中如有不恰当之处欢迎交流指正~~
如需转载,请注明出处!

Linux中的输入协议采用一系列的类型和编码向用户空间表示输入设备的值。

单一的硬件事件可以产生多个输入事件,每个输入事件包含新的单个数据项值。使用一个特殊的事件类型EV_SYNC将输入事件分成不同的数据包,数据包中输入数据的改变在时间上是在同一时刻出现的。在下文中,术语“事件”是指单个输入事件,包括类型,编码和值。

输入协议是一种状态性的协议,只有在事件编码的值改变之后才需要发送事件。尽管如此,状态是保存在Linux输入子系统中的,驱动程序没有必要去保存状态,并且,即使驱动发送没有改变的值也是没有关系的。用户空间通过使用定义在linux/input.h中的EVIOCG来得到当前状态的事件编码。设备支持的事件上报也由sysfs在class/input/event/device/capabilities /中提供,而设备的属性在class/input/event*/device/properties中提供。

1. 事件类型

事件类型是逻辑输入构造下的代码分组。 每种类型都有一组用于生成事件的适用代码。 有关每种类型的有效代码的详细信息,请参见“代码”部分。

  • EV_SYN : 分割事件的标记。事件可能按照事件或者空间进行分割,例如多点触协议。
  • EV_KEY : 用于描述键盘、按键或其他类似按键设备的状态变化。
  • EV_REL : 用于描述相对坐标值变化,例如向左移动鼠标5个单位。
  • EV_ABS : 用于描述绝对坐标值变化,例如描述触摸屏上的触摸坐标。
  • EV_MSC : 用于描述不适合其他事件类型的杂项输入数据。
  • EV_SW : 用于描述二进制状态输入开关。
  • EV_LED : 用于开关设备上的LED。
  • EV_SND : 用于输出声音到设备。
  • EV_REP : 用于自动重复设备。
  • EV_FF : 用于给输入设备发送一个力反馈命令。
  • EV_PWR : 用于电源按键和开关输入的特殊类型。
  • EV_FF_STATUS :用于接受力反馈设备状态。

2. 事件编码

事件编码定义了准确的事件类型。

2.1 EV_SYNC

EV_SYNC事件值没有被定义。它们只有在evdev事件流中被发送时才被定义。

2.1.1 SYN_REPORT

用于同步和分割事件到不同的数据包,数据包中输入数据的改变在时间上是在同一时刻出现的。例如,鼠标的一个动作可能产生REL_X和REL_Y两个值的变化,在这个之后需要发送SYN_REPORT。下一个动作可能发送更多的REL_X和REL_Y,需要发送另一个SYN_REPORT。

2.1.2 SYN_CONFIG

TBD

2.1.3 SYN_M
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值