keyboard - 从 USB HID 键盘发送语言布局

标签 keyboard usb avr hid

我目前正在使用 Atmel 微 Controller 开发 USB HID 键盘。一切正常,但我通常在不同的机器上使用不同的键盘布局。现在我开始想知道是否可以告诉主机使用哪种键盘布局,即 EN-US,这样键码将始终映射到每台机器上的正确字符上。有什么想法吗?

最佳答案

USB 键盘发送的键码表示键在键盘上的物理位置,而不是 ascii/unicode 键数据。就本地化而言,这可能是一件坏事,但这是 90 年代的协议(protocol),他们希望保持简单,并保持当时 PC/AT 标准的思维方式。

这种方法的问题是硬件无法强制执行打印在其物理按钮上的布局。它所能做的就是提示驱动程序有关其映射的信息。 USB HID在 USB 描述符数据(第 6.2.1 节,第 22 页)中定义一个 bCountryCode 字段到这个程度:

Numeric expression identifying country code of the localized hardware.

不幸的是,这是未指定的(相同语言的键盘变体之间没有区别,等等),所以硬件制造商很少使用这个字段,他们几乎总是把 0x00,即 不支持。由于硬件从未使用过这么多,因此从未开发过操作系统支持。

关于keyboard - 从 USB HID 键盘发送语言布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388141/

相关文章:

用于检测键盘按下/释放的 iOS API

linux - 在 Linux 中查找哪个驱动器对应哪个 USB 大容量存储设备

android 枚举USB应用程序

c - 初始化一个变量,同时指定存储地址 : is it possible?

c - 如果在 AVR 编程中所有变量都定义为 volatile 是不是很糟糕?

php - 如果在键盘上按下名字的第一个字母,则滚动到网页上的人名

android - 为什么 AdMob 会弄乱 EditText 流程和键盘?

python - 如何在 docker 容器中使用 'keyboard' python 模块而不出现错误?

android - 手机的名称/型号存储在 android 代码的哪个位置,它是如何存储在那里的?

c - 具有 & 操作的 uint64_t 变量