zoukankan      html  css  js  c++  java
  • linux键值到Android键值的转换与自定义

    首先要确定按键输入设备是对应/dev/input目录下哪个event,根据VID PID匹配对应的kl文件,可通过如下命令 cat /proc/bus/input/devices 查看设备信息

    framework层通过.kl文件将获取的键值转换成实际按键含义后,又会通过KeycodeLabel转换成相应的keycode,具体文件在:frameworks ativeincludeinputKeycodeLabels.h

    然后app可以通过如下方法获得对应键按下时的keyCode值,即“F11”对应获得的keyCode即为上面自定义的<546>

    添加自定义的键值:

    (1)Kernel层:

         include/uapi/linux/input.h 中添加: #define KEY_LXL               123
         drivers/hid/hid-input.c 中添加:                case 0x188: map_key_clear(KEY_LXL);      break;   //其中0x188是HID设备上报的原始键值


    (2)Android系统层:

            ① bionic/libc/kernel/uapi/linux/input-event-codes.h 中添加  : #define KEY_LXL               123    //与kernel中头文件定义一致
            ② 
    Generic.kl或Vendor_xxxx_Product_xxxx.kl文件中添加      :  key 123 LXL;
            ③ 
    /frameworks/native/include/android/keycodes.h  中添加  :  AKEYCODE_LXL          = 666,
           ④ 
    /frameworks/native/include/input/KeycodeLabels.h 的KEYCODES[]数组中添加: { "LXL", 666 },
           ⑤ 在frameworks/base/core/res/res/values/attrs.xml 中添加 :  <enum name="KEYCODE_LXL" value="666" />
           ⑥ 在frameworks/base/core/java/android/view/KeyEvent.java添加: public static final int KEYCODE_LXL= 666;

           
           经过如上的步骤就将Linux驱动向上层抛出的"123"键值和Android系统中的KEYCODE_LXL <666>对应起来了,然后可以在Android的framework层的键值处理函数中,捕获按键事件,并进行相应自定义处理,具体在frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java 的interceptKeyBeforeQueueing()函数中实现。

    (转载自: https://www.cnblogs.com/blogs-of-lxl/p/9490205.html      https://www.cnblogs.com/blogs-of-lxl/p/9490205.html)

  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/goahead--linux/p/12924941.html
Copyright © 2011-2022 走看看