首页 理论教育 常用的InputHandler示例|Linux驱动程序开发

常用的InputHandler示例|Linux驱动程序开发

时间:2023-10-19 理论教育 版权反馈
【摘要】:evdev_handler是Linux内核中通用的输入设备文件处理接口。大部分输入子系统的设备均会匹配到evdev对应的设备节点,也就是/dev/input/event0~/dev/input/eventn。evdev的模块初始化函数为evdev_init,代码如下:evdev_ids并没有设置flag域,根据input_match_device函数的结果,它是匹配所有输入设备的。下一节我们将继续分析evdev设备。鼠标设备既有绝对值事件,也有“点击”等KEY事件。input_leds_handler是内核中针对LED的控制接口,可用于标准键盘的LED控制。标准键盘上既有按键,又有LED灯,两者是如何关联的呢?

常用的InputHandler示例|Linux驱动程序开发

evdev_handler是Linux内核中通用的输入设备文件处理接口。大部分输入子系统的设备均会匹配到evdev对应的设备节点,也就是/dev/input/event0~/dev/input/eventn。evdev的模块初始化函数为evdev_init,代码如下:

evdev_ids并没有设置flag域,根据input_match_device函数的结果,它是匹配所有输入设备的。下一节我们将继续分析evdev设备。

mousedev_handler是Linux内核中针对鼠标设备的处理接口。鼠标设备既有绝对值事件(EV_REL),也有“点击”等KEY事件(EV_KEY)。

kbd_handler是Linux内核中针对键盘的处理接口。

input_leds_handler是内核中针对LED的控制接口,可用于标准键盘的LED控制。

标准键盘上既有按键,又有LED灯,两者是如何关联的呢?先看kbd_handler的event接口:(www.xing528.com)

kbd_event函数启动了keyboard_tasklet,用来处理LED状态,具体实现如下:

再看input_leds_handler中的LED控制接口,它实际上注册了一个LED类设备,具体代码如下:

假如内核配置了CONFIG_INPUT_LEDS与CONFIG_LEDS_TRIGGERS,上面的kbd_propagate_led_state函数将调用led_trigger_event通过led子系统调用input_leds.c中的led接口(input_leds_brightness_set)向输入设备发出输入事件:

假如内核没有配置CONFIG_INPUT_LEDS与CONFIG_LEDS_TRIGGERS,则kbd_propagate_led_state函数将直接向输入设备发出输入事件:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈