USB键盘 - 在android

时间:2015-09-08 10:49:35

标签: android android-source android-keypad android-kernel

我有一个带有0 to 9,*,#,+,-,CALL,CALLEND键的USB键盘,我正在使用Android板。

使用默认的android Generic.kl文件,此键盘为每个按下的键提供正确的输出(在TextBox和this application中检查)。

根据上述申请,扫描代码如下所示

  

CALL - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:48 keyCode:30   KEYCODE_B

     

ENDCALL - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:30 keyCode:29   KEYCODE_A

     

STAR - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:9 keyCode:15   KEYCODE_8

     

POUND - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:4 keyCode:10   KEYCODE_3

我需要重新映射它,我的自定义.kl内容如下,

  

key 2 1

     

key 3 2

     

key 4 3

     

key 5 4

     

key 6 5

     

key 7 6

     

key 8 7

     

key 9 8

     

key 10 9

     

key 11 0

     

键12 VOLUME_DOWN

     

键78 VOLUME_UP

     

键30 ENDCALL

     

key 48 CALL

我把它放在/system/usr/keylayout/

现在进行此更改后,当我使用相同的测试应用程序检查扫描代码时,我收到scanCode:54按钮,该按钮之前为30。

我对此行为有以下问题,

  1. 我对扫描码的理解是它们是特定于硬件的,每次软件/主机是什么时都会提供相同的扫描码?我的意思是键盘的扫描码不会改变?这不会发生在这里。
  2. 我也试过在ENDCALL中添加文件.kcm,但无论有没有,行为都是一样的。我是否需要使用/system/usr/keychars/文件?

1 个答案:

答案 0 :(得分:1)

  1. 是的,afaik扫描代码特定于驻留在硬件中的固件。即对于键盘/键盘设备,扫描代码将由硬件提供,它们将是唯一的区分键。

  2. 在android中,如果您不想更改设备的字符映射,则不需要字符映射文件(.kcm)。字符映射文件的作用是将键码映射到人类可读字符。如果您没有为您的设备提供.kcm文件,它将使用Generic.kcm文件进行字符映射。

  3. 您还可以参考链接1& 2了解更多信息。