2

我正在尝试通过为我的蓝牙设备创建自定义键布局文件来在 Android 5.1 中进行一些键重新映射,但是我的一些设备的键在 Android 中没有任何作用(例如键盘上的 iOS 特定键)或者在它显示为关键事件之前被 Android 拦截。

据我所知,问题在于这些键的扫描码当前未映射到通用键布局列表中的任何内容,或者它们被视为像 Home 键这样的系统键,而实际按键永远不会到达常规应用程序. 假设这是因为扫描码尚未映射到 Android 中的任何内容,有没有办法从设备获取原始扫描码,以便我可以尝试自己记录代码并为其编写适当的按键布局文件?我的设备上有根,如果有基于 Windows 的方法从蓝牙键盘读取未知扫描码,我也可以将设备连接到我的 Windows 10 PC。

4

1 回答 1

2

我知道这是一个老问题,但我在寻找类似的东西时遇到了它。

可能有更好的方法来做到这一点,但这是我知道如何更改您需要 root 的键码的唯一方法。

首先将您的蓝牙设备连接到您的安卓设备,然后将您的安卓设备连接到您的电脑。在命令提示符下键入:

adb shell
cat /proc/bus/input/devices

它会打印出类似的东西

I: Bus=0005 Vendor=0b05 Product=4500 Version=0031
N: Name="ASUS Gamepad"

还会有更多,还有更多设备,但我们将使用华硕游戏手柄。在您的桌面上创建一个名为 Vendor_0b05_Product_4500.kl 的文本文件,它区分大小写,因此请确保 v+p 都是大写。

安装推荐的 apk cde 或在此处获取开源版本https://github.com/chrisboyle/keytest/downloads安装它运行它并按您要重新映射的键。这两个应用程序都会向您显示将它们写下来的扫描码以及它们映射到的键。

现在,您拥有所有扫描代码,在文本编辑器中打开 Vendor_0b05_Product_4500.kl 并输入例如

#Asus Gamepad
#key 304 BUTTON_A

键 304 是扫描码,BUTTON_A 是您希望 android 系统将其解释为的键码。

保存文件并 adb 将其推送到 /system/usr/keylayout/ 并重新启动您的设备,如果您需要有关键码的帮助,请查看此处http://developer.android.com/reference/android/view/KeyEvent.html只是不要' t 添加 KEYCODE 部分。

于 2016-02-28T01:51:56.123 回答