1. 映射键值
@ \device\qcom\msm8909\gpio-keys.kl
key 212 SOS
上层同事在 frameworks\base\core\java\android\view\KeyEvent.java 定义键值:
public static final int KEYCODE_SOS = 528; //( 0x210 )
2. 配置 GPIO dts
2.1 配置 中断键值
@ \kernel\msm-3.18\arch\arm\boot\dts\qcom\msm8909-mtp.dtsi
搜索 gpio_keys 关键字:
gpio_keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0 = <&gpio_key_active>;
pinctrl-1 = <&gpio_key_suspend>;
new add 20190923 begin///
key_sos {
label = "key_sos";
gpios = <&msm_gpio 90 0x1>;
linux,input-type = <1>;
linux,code = <0x212>;
gpio-key,wakeup;
debounce-interval = <15>;
};
/*
camera_focus {
label = "camera_focus";
gpios = <&msm_gpio 91 0x1>;
linux,input-type = <1>;
linux,code = <0x210>;
gpio-key,wakeup;
debounce-interval = <15>;
};
*/
new add 20190923 end///
camera_snapshot {
label = "camera_snapshot";
gpios = <&msm_gpio 92 0x1>;
linux,input-type = <1>;
linux,code = <0x2fe>;
gpio-key,wakeup;
debounce-interval = <15>;
};
};
2.2 配置 gpio 为输入模式
@ \kernel\msm-3.18\arch\arm\boot\dts\qcom\msm8909-pinctrl.dtsi
搜索 gpio_keys 关键字,检查是还有 GPIO90,
下面代码,看起来 GPIO 90 已经配置成 输入模式了
tlmm_gpio_key {
gpio_key_active: gpio_key_active {
mux {
pins = "gpio90", "gpio91", "gpio92";
function = "gpio";
};
config {
pins = "gpio90", "gpio91", "gpio92";
drive-strength = <2>;
bias-pull-up;
};
};
gpio_key_suspend: gpio_key_suspend {
mux {
pins = "gpio90", "gpio91", "gpio92";
function = "gpio";
};
config {
pins = "gpio90", "gpio91", "gpio92";
drive-strength = <2>;
bias-pull-up;
};
};
};
修改完毕后,可以使用
adb shell getevent
然后按键,看对应的 事件是否正确