1

我有一个带0 to 9,*,#,+,-,CALL,CALLEND按键的 USB 键盘,我将它与 Android 板一起使用。

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

根据上述应用,这些扫描代码如下所示,

呼叫 - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:48 keyCode:30 KEYCODE_B

结束呼叫 - META_SHIFT_ON | META_SHIFT_RIGHT_ON - scanCode:30 keyCode:29 KEYCODE_A

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

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

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

钥匙 2 1

键 3 2

键 4 3

关键 5 4

键 6 5

键 7 6

钥匙 8 7

钥匙 9 8

键 10 9

钥匙 11 0

键 12 VOLUME_DOWN

键 78 VOLUME_UP

键 30 结束呼叫

键 48 呼叫

我已经把它放进去/system/usr/keylayout/

现在有了这个更改,当我使用相同的测试应用程序检查扫描代码时,我正在获取之前scanCode:54为 30 的ENDCALL按钮。

我对这种行为有以下疑问,

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

1 回答 1

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

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

您也可以参考链接12了解更多信息。

于 2015-09-22T16:20:17.103 回答