RK3399 gpio 做系统按键


一.kernel\arch\arm64\boot\dts\rockchip\rk3399-android.dtsi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
rk_key: rockchip-key {
    compatible = "rockchip,key";
    status = "okay";
 
    //io-channels = <&saradc 0>;
 
    vol-up-key {
        linux,code = <115>;
        label = "volume up";
        rockchip,adc_value = <1>;
    };
 
    vol-down-key {
        linux,code = <114>;
        label = "volume down";
        rockchip,adc_value = <170>;
    };
 
    power-key {
        gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
        linux,code = <116>;
        label = "power";
        gpio-key,wakeup;
    };
     
    gpio1-key {
        gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
        linux,code = <131>;
        label = "gpio1 key";
        gpio-key,wakeup;
    };             
};

二.frameworks\native\include\android\keycodes.h

1
2
3
4
5
6
/** F1 key. */
AKEYCODE_F1              = 131,
/** F2 key. */
AKEYCODE_F2              = 132,
/** F3 key. */
AKEYCODE_F3              = 133,

三.rk29-keypad.kl  加按键值

系统 优先加载  system\usr\keylayout\rk29-keypad.kl   

device\rockchip\common\rk29-keypad.kl

1
2
3
4
5
6
7
8
9
10
11
12
key 59    MENU
key 102   HOME
key 114   VOLUME_DOWN
key 115   VOLUME_UP
key 116   POWER
key 143   NOTIFICATION
key 158   BACK
key 212   CAMERA
key 217   SEARCH
key 131   F1
key 132   F2
key 133   F3  

四.frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java  

  public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        else if(keyCode == 131){   
        if (!down) {
          //Log.d("gatsby", "gpio1_key xh_flag-> " + xh_flag +" gpio1_key  num->"+gpio1_key);
          if(xh_flag){
             if(gpio1_key %2 !=0){
                  RootCommand("settings put system screen_brightness 255");
                  toastTest("Highlight mode!");                    
             }else {
                  RootCommand("settings put system screen_brightness 110");
                  toastTest("Normal brightness!");
             }
          }
            gpio1_key++;                       
        }  
        return -1;
}

  

 

posted @   CrushGirl  阅读(1153)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示