不追求面面俱到,我也是行走在道路上,点到为止。本篇基于realtek TV方案分析。
简述:
我会从linux kernel 和 android 两个部分分析,在我看来这个两个部分就是从android 目录下的Generic.kl(或自定义kl) 分离开来的。
工作中会遇到的问题:
kernel:1、驱动已经添加OK,需要添加新的按键码
android:2、添加一个新的android keycode
3、新输入设备如何选择相应的XXX.kl文件
4、按键进入处理队列前会怎么走(interceptKeyBeforeQueueing)
——————————————————————————————————————————————————————————————————————
kernel:
——————————————————————————————————————————————————————————————————————
kernel总是那么专注,分析总是以module_init开始,以module_exit结束。
路径:linux-3.7.2\arch\arm\bsp-realtek\mach-rtd298x\Irrc.c
module_init(ir_init_module);
module_exit(ir_cleanup_module);
先来看ir_init_module:
|
venus_ir_input_init:设备文件初始化,其中 data->input_dev->name = "venus_IR_input"; 这个名字会用于android输入设备使用xxx.kl文件的名字
data->input_dev->keybit:输入子系统在发送按键前首先会检测要发送的按键值keycode,是否在keybit位图中有注册,所以
set_bit(rtk_mk5_tv_key_