我试图通过为我的蓝牙设备创建自定义键盘布局文件来在Android 5.1中进行一些小键重映射,但是我的一些设备上的键在Android中无法执行任何操作(例如键盘上的iOS特定键)或在Android显示为关键事件之前被Android拦截。
据我所知,问题是这些密钥的扫描码目前不会映射到通用密钥布局列表中的任何内容,或者它们被视为系统密钥,如Home键和实际按键永远不会到达常规应用。 假设它是因为扫描码没有映射到Android中的任何东西,有没有办法让原始扫描码从设备进来,所以我可以尝试自己记录代码并编写一个合适的keylayout文件为了它?我在我的设备上有root用户,如果有基于Windows的方法从蓝牙键盘读取未知的扫描码,我也可以将设备连接到我的Windows 10 PC。
答案 0 :(得分:0)
我知道这是一个古老的问题,但我在寻找类似的东西时遇到了它。
可能有更好的方法可以做到这一点,但这是我知道如何更改您需要root的密钥代码的唯一方法。
首先将您的蓝牙设备连接到您的Android设备,然后将您的Android设备连接到您的电脑。在命令提示符下键入:
adb shell
cat /proc/bus/input/devices
它会打印出类似于此内容的内容
I: Bus=0005 Vendor=0b05 Product=4500 Version=0031
N: Name="ASUS Gamepad"
除此之外还有更多设备,但我们将使用asus游戏手柄。 在桌面上创建一个名为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,但不要添加KEYCODE部分。