sylixos input子系统学习、调试记录

Input 子系统框架图:

Xinput设备驱动层:

将所有设备抽象成xmes、xkbd设备,上层程序(如Qt)就可以像操作普通字符设备一样操作它们。

Xinput核心处理层:

从物理设备取得输入事件,然后通过消息队列通知给xinput设备驱动层,唤醒上层应用。

物理设备层:

设备的驱动程序需要驱动工程师自己编写。通过专用的结构体传递鼠标、键盘事件给xinput子系统。

        xinput 模块加载时会通过环境变量 KEYBOARD MOUSE 获取当前需要关注的 input

设备名称,并注册 xinput 设备驱动、建立 xinput 设备,最终创建 xinput 最重要的 xinput_scan 线程。

        xinput_scan 线程创建之后会尝试打开 xinput 模块加载时已设置的需关注的 input 设备。

若打开成功,则记录下其文件描述符 fd,作为当前需要关注的 input 设备之一。

        xinput_scan 线程使用了多路 I/O 复用的 select 函数,将已打开的 input 设备文件描述符、系统热插拔设备“/dev/hotplug”文件描述符归入同一个描述符集,监听描述符集中所有描述符的状态。

矩阵键盘调试过程记录:

要想顺利将中断中的数据传到上层,要设置好以下几点————

1、环境变量三处设置

keypad要想成功上报数据,Qt相关的环境变量里就要加上xkbd。

2、select函数要在驱动的ioctl中实现。(关于select可以详看这篇文章:SylixOS字符设备驱动开发(十二) | 南京养鸡二厂)

3、实测keypad.ko要在xinput.ko之前注册。在之后注册,系统起来后没有调用到open()。

4、报上去的是对应的ASCII码,大写英文要通过大写锁定或者shift组合键完成。Press、Release操作都要将键值发送出去。

 

touch驱动数据流向:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值