【问题标题】:How can I send accented characters and unicode in a USB HID report如何在 USB HID 报告中发送重音字符和 unicode
【发布时间】:2021-07-19 09:24:40
【问题描述】:

我正在 Android 上构建蓝牙 HID 键盘应用程序,但在我的键盘报告中,我坚持使用发送重音字符 (à,è,é,...) 和 Unicode 的最佳方式.

我已经有一个工作报告地图/描述符。在Usage Page 中没有à 的使用ID,但this arduino project 似乎能够以我无法弄清楚它为什么起作用的方式发送它。 ASCII 映射有 a 映射到 0x14,但在 HID 规范中它应该是 0x04

所以,

  1. 谁能解释一下为什么在链接的项目中为 'a' 发送 0x14 而不是 0x04 有效?

  2. 有没有比为ALT Codes 模拟操作系统特定的快捷方式来获取 unicode 字符更好的方法?

【问题讨论】:

  • 其实我知道keycode是键盘发送来通知按键的位置(主机负责将keycode映射到一个字符),而ascii已经是一种code映射到一个字符。可能是我错过了一些让我无法理解该图书馆正在发生什么的事情。
  • 欢迎来到键盘布局和字符编码的噩梦! “A” (0x04) 的 USB 使用代码仅适用于美国英语 (QWERTY) 键盘布局。在法语 (AZERTY) 键盘上,“A”键和“Q”键的位置是交换的……所以法语键盘上的“A”是 USB 使用 0x14,但在美式键盘上是 USB 使用 0x04。 USB 规范确实有一个 Unicode 页面,但它在很大程度上取决于操作系统支持(我对此一无所知)。

标签: unicode arduino keyboard usb hid


【解决方案1】:

正如@aja 所说,键盘布局是一场噩梦。

为了发送重音字符,您必须发送键盘快捷键。一个键whose you know the code + a modifier。所以这取决于每个keyboard layout

对于 Unicode 字符(另一个噩梦),我所做的是依赖于操作系统的,例如对于 windows,我模仿了 Alt Codes

如果您找到更好的方法,请ping me

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多