FAQ
来自SylixOS-wiki
(版本间的差异)
Jiaojinxing (讨论 | 贡献) (以“ SylixOS 输入子系统 input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS无对应的 API,但 SylixOS 有一个 xinput 内核模...”为内容创建页面) |
Jiaojinxing (讨论 | 贡献) |
||
第2行: | 第2行: | ||
SylixOS 输入子系统 | SylixOS 输入子系统 | ||
− | input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS无对应的 | + | input_report_abs 是 linux 的函数,它把输入事件上报到内核,SylixOS无对应的 API。 |
− | “监听”你可以理解为打开设备文件、select 等待设备可读、然后读设备,也就说是输入设备不用主动上报输入事件到内核(因为 xinput | + | 但 SylixOS 有一个 xinput 内核模块,xinput 内核模块“监听”多个输入设备(如鼠标、触摸屏、键盘)。 |
+ | |||
+ | “监听”你可以理解为打开设备文件、select 等待设备可读、然后读设备,也就说是输入设备不用主动上报输入事件到内核(因为 xinput 内核模块会主动读)。 | ||
在输入设备的设备驱动里需要做的事件就是等待事件发生(如触摸屏按下),然后获得 x、y 坐标和压力值,并填充到 touchscreen_event_notify 类型的事件结构, | 在输入设备的设备驱动里需要做的事件就是等待事件发生(如触摸屏按下),然后获得 x、y 坐标和压力值,并填充到 touchscreen_event_notify 类型的事件结构, | ||
− | 最后调用 SEL_WAKE_UP_ALL(&ptsDev->TS_selwulList, SELREAD); 唤醒所有等待可读的线程(如 xinput | + | 最后调用 SEL_WAKE_UP_ALL(&ptsDev->TS_selwulList, SELREAD); 唤醒所有等待可读的线程(如 xinput 内核模块的线程)。 |
+ | |||
+ | xinput 内核模块的线程被唤醒后,然后读输入设备,读出来的是 touchscreen_event_notify 类型的事件结构。 |
2015年6月24日 (三) 10:54的版本
SylixOS 输入子系统
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 类型的事件结构。