【技术探讨】关于坚果root之后键值修改的讨论’( 二 )

  • <pre></pre>  
  • <pre></pre>  
  • <pre></pre>  



  • 在android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢?
             对keypad来说,涉及到的文件有以下几个:
            1,/vendor/qcom/7k_ffa_keypad.kl
                   首先在此文件中,添加新的键值信息:Example: key   123    WLS   flag
                  注意:新加的键值不要与已有的重复 。
            2.  kernel/arch/arm/mach-msm/keypad_surf_ffa.c
                  在keypad对应的键位添加自定义的键码  如 :123
           3.   frameworks/base/include/ui/keycodeLabels.h
                   在数组keycodes 中添加 新定义的信息
                    { "MUTE", 91 },  { "WLS" , 92 }
                   枚举类型 KeyCode 中添加
                        kKeyCodeMute = 91
                        kKeyCodeWLS  = 92
           4.  frameworks/base/core/res/res/values/attrs.xml
                    <enum name="KEYCODE_MUTE"  value=http://www.codepub.com/shouji/chuizi/"91"/>
                   <enum name="KEYCODE_WLS" value=http://www.codepub.com/shouji/chuizi/"92" />
          5.   frameworks/base/core/java/android/view/KeyEvent.java
                  public static final int KEYCODE_MUTE          = 91;
                  public static final int KEYCODE_WLS            = 92;
                  注意:       private static final int LAST_KEYCODE    = KEYCODE_MUTE;
                  应改为:   private static final int LAST_KEYCODE    = KEYCODE_WLS;
                  
                 在函数 public final boolean isSystem() 中,同样需要添加:

                    case KEYCODE_SEARCH:
                    case KEYCODE_WLS:

                //注意:现在(Android 2.3)这个函数调用的是frameworks\base\libs\ui\Input.cpp中的bool KeyEvent::isSystemKey(int32_t keyCode)

    推荐阅读