FAQ

来自SylixOS-wiki
(版本间的差异)
跳转至: 导航, 搜索
第1行: 第1行:
  
'''Q: 问题?'''
+
'''A: 问题?'''
  
'''A: '''回复。
+
'''Q: '''回复。
  
  
'''Q: xinput 内核模块的用途是什么?输入设备的驱动应该如何编写?'''
+
'''A: xinput 内核模块的用途是什么?输入设备的驱动应该如何编写?'''
  
'''A: '''input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS 无对应的 API。
+
'''Q: '''input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS 无对应的 API。
  
 
但 SylixOS 有一个 xinput 内核模块,xinput 内核模块“监听”多个输入设备(如鼠标、触摸屏、键盘)。
 
但 SylixOS 有一个 xinput 内核模块,xinput 内核模块“监听”多个输入设备(如鼠标、触摸屏、键盘)。

2015年6月24日 (三) 11:05的版本

A: 问题?

Q: 回复。


A: xinput 内核模块的用途是什么?输入设备的驱动应该如何编写?

Q: input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS 无对应的 API。

但 SylixOS 有一个 xinput 内核模块,xinput 内核模块“监听”多个输入设备(如鼠标、触摸屏、键盘)。

“监听”你可以理解为打开设备文件、select 等待设备可读、然后读设备,也就说是输入设备不用主动上报输入事件到内核(因为 xinput 内核模块会主动读)。

在输入设备的设备驱动里需要做的事件就是等待事件发生(如触摸屏按下),然后获得 x、y 坐标和压力值,并填充到 touchscreen_event_notify 类型的事件结构,

最后调用 SEL_WAKE_UP_ALL(&ptsDev->TS_selwulList, SELREAD); 唤醒所有等待可读的线程(如 xinput 内核模块的线程)。

xinput 内核模块的线程被唤醒后,然后读输入设备,读出来的是 touchscreen_event_notify 类型的事件结构。

xinput 内核模块解决了多同类型输入设备和输入设备热挺拔的问题。

个人工具
名字空间

变种
操作
导航
工具