This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM5728:Linux 上 USB 键盘输入的处理

Guru**** 2546020 points
Other Parts Discussed in Thread: AM5728

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/602404/linux-am5728-the-processing-of-input-from-usb-keyboard-on-linux

器件型号:AM5728

工具/软件:Linux

您好!


我的客户目前使用的是带 WEC7操作系统的 AM5728。 他们还计划在下一代系统中将新的 Sitara 处理器与 Linux 操作系统搭配使用。


因此客户对 Linux 没有任何体验。


客户拥有用于自己系统的专用键盘。 因此、客户希望构建 Linux 的 USB Keyboad 驱动程序。 因此、他们希望了解 USB 键盘输入的处理情况。


下面是 Windows 中 USB 键盘输入的处理。


1) 1) Windows 操作系统临时接收键盘输入信息。


2) 2) Windows OS 判断接收到的数据应发送到哪个应用程序。 消息结构是从接收的数据生成的、MSG 结构存储在每个应用程序的消息队列中。

3) 3)在每个应用中 、名为"message roop"的处理正在运行。

4) 4)"message roop"从自己的消息队列逐一检索 MSG 结构。 并分析数据、然后调用事件处理程序。  "消息循环"也会为按键生成字符代码。

注:

信息--"扫描代码"、"虚拟键码"和"按键笔划"中包含的信息。

我附了一张图片以作这种解释。 请看。

Linux OS 如何? Linux 是否执行与 Windows 操作系统相同的处理?

请告诉我。

我随函回复您的快速回复。

此致、

Michi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该说明忽略 Windows 驱动程序完成的所有处理。

    不管怎样、该键盘有什么特别之处? 它是否不使用 USB HID 协议? 它是否使用了奇怪的密钥代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Clemens-San:

    感谢您的快速回复。

    客户的新键盘具有通用 USB 键盘中没有的特殊键。 特殊密钥被分配给"使用 ID "。
    通用 USB 键盘中未使用"使用 ID "。 ( 有关使用 ID、请参阅" www.usb.org/.../Hut1_12v2.pdf "。)

    客户还使用 USB HID 协议。

    顺便说一下、您说过"该描述忽略了 Windows 驱动程序完成的所有处理。" 这意味着什么?
    这是否意味着 Linux USB HID 驱动程序可以毫无问题地使用客户的特殊键盘?
    请告诉我。

    感谢您的快速回复。

    此致、
    Michi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 Windows 中,kbdhid.sys 驱动程序处理 HID 协议,然后 KBDCLASS.sys 处理所有键盘事件并生成要发送到应用程序的消息。

    如果 Windows 已经为自定义密钥发送消息、则 Linux 可能在没有单独驱动程序的情况下也会这样做。

    将键盘连接到某些 Linux PC。 检查它是否显示在/dev/input/by-id/.中 在该输入设备上运行 evtest 工具,检查是否获得自定义密钥的事件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Clemens-San:

    感谢您的持续支持。

    我测试了在 Windows7 PC 下将通用 USB 键盘连接到 VMware 上的 Ubundu14.04。 但我在/dev/input/by-id/.中看不到任何内容

    顺便说一句、我不理解您说过"如果 Windows 已经为自定义密钥发送消息、那么 Linux 在没有单独驱动程序的情况下可能也会这样做。"
    在 Linux 操作系统中,kbdhid.sys 和 KBDCLASS.sys 驱动程序是否与 Windows 操作系统相同。 这些 Linux 的键盘驱动程序是否仅向应用程序发送通用密钥?

    我不熟悉 USB。 请告诉我。

    感谢您的持续支持。

    此致、
    Michi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Linux 内核不会将键盘视为 USB 设备,除非您让 VMware 将该设备传递给 VM。 你是这样做的吗?

    在 Linux 中、等效驱动程序为 usbhid.ko、hid-core.ko 和 input-core.ko。

    据我所知、HID 和输入驱动程序应该为应用程序提供所有密钥代码。 但是、您的应用通常会在其基础上使用 Qt 或 GTK+等库、我不知道这些库的行为方式。

    无论如何、第一步是检查您是否获得了/dev/input 输入设备、以及是否可以看到自定义密钥的事件。