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

Writing a Android System app that uses KeyEvents to insert text into a text field. But Extended unicode characters are not printable

所以我可以将 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 文件包含这个)...但它不会将 unicode 符号键入对应的 1111.

有人可以帮忙吗?

能够弄清楚。

第 1 步:更新您的 Android OS 的 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