Android系统通过按键字符映射文件(.kcm)负责将 Android 按键代码与修饰符的组合映射到Unicode字符。用于实现一键对应多个字符的输出(配合ALT、SHIFT、CAPS_LOCK功能键实现)
1.按键字符映射kcm文件命名规则
字符映射文件的命名规则有两种:
- 使用 设备的 供应商(Vendor)、产品(Product)和版本(Version) ID,其中Version为可选
- 输入设备名称
如下所示
Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
Vendor_XXXX_Product_XXXX.kcm
DEVICE_NAME.kcm
注:
当以DEVICE_NAME来命名时,设备名称中除“0-9”、“a-z”、“A-Z”、“-”或“_”之外的所有字符都会被替换为“_”.
如果三种命名规则的文件都存在,则系统查阅kcm的优先级顺序为由上至下逐次降低。
如果查找不到对应的kcm文件,则使用默认的Generic.kcm(此按键字符映射旨在支持各种标准外部键盘)。
kcm是存放在xxx/usr/keychars目录下,系统内按照目录优先级为
按上述顺序查阅以下路径
- /odm/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
- /vendor/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
- /system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
- /data/system/devices/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
- /odm/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
- /vendor/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
- /system/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
- /data/system/devices/keychars/Vendor_XXXX_Product_XXXX.kcm
- /odm/usr/keychars/DEVICE_NAME.kcm
- /vendor/usr/keychars/DEVICE_NAME.kcm
- /system/usr/keychars/DEVICE_NAME.kcm
- /data/system/devices/keychars/DEVICE_NAME.kcm
- /odm/usr/keychars/Generic.kcm
- /vendor/usr/keychars/Generic.kcm
- /system/usr/keychars/Generic.kcm
- /data/system/devices/keychars/Generic.kcm
- /odm/usr/keychars/Virtual.kcm
- /vendor/usr/keychars/Virtual.kcm
- /system/usr/keychars/Virtual.kcm
- /data/system/devices/keychars/Virtual.kcm
2. 查找输入设备对应的
按键字符映射文件可以通过USB供应商、产品ID或输入设备名称进行定位。
按上述顺序查阅以下路径:
/system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
/system/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
/system/usr/keychars/DEVICE_NAME.kcm
/data/system/devices/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
/data/system/devices/keychars/Vendor_XXXX_Product_XXXX.kcm
/data/system/devices/keychars/DEVICE_NAME.kcm
/system/usr/keychars/Generic.kcm
/data/system/devices/keychars/Generic.kcm
/system/usr/keychars/Virtual.kcm
/data/system/devices/keychars/Virtual.kcm
当构建包含设备名称的文件路径时,设备名称中除“0-9”、“a-z”、“A-Z”、“-”或“”之外的所有字符都会被替换为“”。
https://blog.csdn.net/weixin_30429201/article/details/96439812
https://blog.csdn.net/weixin_34224941/article/details/91886155
https://blog.csdn.net/kieven2008/article/details/6279975?utm_source=blogxgwz8
https://wenku.baidu.com/view/b2e47eff195f312b3069a527.html
idc:
https://www.jianshu.com/p/4bb08d6ac560