编写一个使用KeyEvents将文本插入文本字段的Android系统应用但是扩展的unicode字符不可打印

问题描述

因此,我可以将CTL +用于控制字符,将SHIFT +用于诸如A,B之类的大写字母和诸如!,{(即基本拉丁字符和标点符号)之类的字符。

但是我无法在Android中找到Ã,dž...等符号的组合。 Ubuntu使用CTRL + SHIFT + U ..的组合,后跟四个生成符号的数字,但这似乎无法翻译为Android。

TL; DR:如何使用Android KeyEvents和KeyCharacter Map生成特殊符号?

更新:了解到该资源:https://source.android.com/devices/input/key-character-map-files,看起来我将不得不使用组合键,他们谈论的是魔术十六进制输入,但是我尝试使用

1111,后跟Alt + Shift + X(qwerty.kcm文件包含此文件)...但是它不会在相应的1111上键入Unicode符号。

有人可以帮忙吗?

解决方法

能够弄清楚。

第1步:更新Android操作系统的kcm文件(大多数情况下为Generic.kcm)。下面的示例带有“ X”按钮,但实际上它可以应用于任何按钮。添加alt + shift行为,并将魔术十六进制代码添加到alt + shift + X的组合中。

key X {
    label:                              'X'
    base:                               'x'
    shift,capslock:                    'X'
    alt+shift:                          '\uef00'
}

步骤2: 在应用程序服务中为1,2,3,4生成一个键盘事件,然后为Alt + Shift + X生成一个键盘事件,您将能够打印字符“ሴ”。

阅读这些参考资料以获取更多信息。

https://source.android.com/devices/input/key-character-map-files
https://developer.android.com/reference/android/view/KeyEvent
https://android.stackexchange.com/questions/38405/how-to-insert-unicode-characters-by-their-hex-codes-using-usb-keyboard-on-ics