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

标签 android android-source keyevent

所以我可以将 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

关于android - 编写一个使用 KeyEvents 将文本插入文本字段的 Android 系统应用程序。但是扩展的 unicode 字符不可打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64627959/

相关文章:

android - 使用 fragment 和 ImageView 的 viewpager 中的内存不足错误

android - Foursquare 的 Android 原生 oauth 授权流程产生空白的 Foursquare

android - 构建旧版 Android AOSP

android - 如何在android上捕获KeyEvents?

javascript - Mac 中 Ctrl + 鼠标左键单击(多选)

android:errorMessageBackground 在 styles.xml 中找不到资源错误

android - 单击删除按钮时如何刷新 ListView

android - java.io.FileNotFoundException :/cache/recovery/uncrypt_file: open failed: EACCES (Permission denied) 错误

android-source - 在 MacOS M1 上构建 AOSP

java - 如何为shift+8(*)或java中的任意两个键添加KeyListenet