T9632 是mtk 方案的TV芯片,将mstar 原有框架进行了重新设计,很多功能的部署也发生了变化。本片主要分享一下遥控器的配置功能。
下面是遥控器功能部署的几个基本步骤
核心步骤在1, 2 ,就是通过内核的键值(input-event-codes.h)为桥梁将遥控器的码值和Framework 按键事件连接起来。
一. 遥控器码值与键值的映射
首先我们不看遥控器协议,这部分基本是标准的,将遥控器在内核input系统注册为输入设备也是标准的。我们只看按键的配置。
我们看那个ir_config.ini
Protocols 定义了支持的遥控器协议,有NEC,RC5,RC6,RCMM,KONKA,HAIER,RCA,P7051,TOSHIBA,RC5X,RC6_Mode0
从上面看定义了三款遥控器,KIR_ChinaMobile,KIR_Cultraview,KIR_SML。接着分别配置三款遥控器当前使用的协议(Protocol),头码(Header),及码值和键值映射表(Keymap)。
下面我们以一款客户的遥控器为例:
keymap映射表里面,右侧是遥控器按键对应的码值,左边对应的是内核的键值头文件input-event-codes.h,另外内核里面还需要在input_keys_available.h 里面放开这些键值。
二. 键值与输入事件的映射
这一步主要将eventhub 从/dev/intpu/eventX 获取的键值映射framework 的input event。在Vendor_3697_Product_0001.kl 完成
三. 输入事件和应用层事件的映射
将InputEventLables.h 中的event 和Keycodes.h ,Attrs.xml,keyevent.java 事件连接起来,应用层就可以直接捕获事件做响应处理了。
- 总体流程如下:
- 相关文件
1、apollo\linux_core\misdk\mi\mi\platform\m7332\linux\board_cfg\ir_config.ini
2、vendor/mediatek/proprietary_tv/open/product/m7322/preinstall/keylayout/Vendor_3697_Product_0001.kl
3、\frameworks\native\include\input\InputEventLabels.h
4、\kernel\fusion\4.19\include\uapi\linux\input-event-codes.h
5、\kernel\fusion\4.9\include\uapi\linux\input-event-codes.h
6、\kernel\fusion\mstar2\drv\ir_mirc\ir_dynamic_config\input_keys_available.h
7、\frameworks\native\include\android\keycodes.h
8、\frameworks\base\core\java\android\view\KeyEvent.java
9、\frameworks\base\core\res\res\values\attrs.xml