如何映射 RAWINPUT HID 事件数据以获取触摸点坐标

Posted

技术标签:

【中文标题】如何映射 RAWINPUT HID 事件数据以获取触摸点坐标【英文标题】:How to map RAWINPUT HID event data to get touch point coordinates 【发布时间】:2013-08-30 08:00:43 【问题描述】:

我正在尝试使用 Windows RAWINPUT API 和 WM_INPUT 消息来获取多点触控输入的原始触控事件数据。 请注意,WM_TOUCH 已经尝试过,但没有提供所需的性能。

我让 RAWINPUT 正常工作,因此设备已注册并以 63 字节的原始格式接收触摸事件的消息。 如何将这些事件的特定于供应商的原始输入数据转换/映射为独立于供应商的数据,以便安全地检索不同设备类型的接触点坐标?

必须有一种通用方法将原始数据映射到结构化信息。我假设通过检索数据格式的模式。 任何指向正确方向的指针或代码 sn-ps 将不胜感激。 :)

【问题讨论】:

你能出示你的代码吗? 没有太多代码可以分享。原始隐藏数据被检索。这是预期的并且工作正常。我只是不知道如何映射/转换原始字节数组以获取接触点坐标。下面是一些示例代码:codeproject.com/Articles/381673/… 但必须有一种通用的方法将原始数据映射为通用格式。 你找到解决办法了吗?我读过我们可以将 GetRawInputDeviceInfo 与 RIDI_PREPARSEDDATA 一起使用,但是同样的问题 - 我不知道如何解码这个 PHIDP_PREPARSED_DATA 数据。 【参考方案1】:

这里有一些很棒的资源http://archive.msdn.microsoft.com/WindowsTouch 和一些代码示例这里http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=WindowsTouch&DownloadId=5038

【讨论】:

谢谢,但是这些都是关于 WM_TOUCH 而不是 RAWINPUT / WM_INPUT 的,它是低于一个级别的。 WM_TOUCH 已经尝试过,但没有提供所需的性能。我编辑了我的问题以使其更清楚。

以上是关于如何映射 RAWINPUT HID 事件数据以获取触摸点坐标的主要内容,如果未能解决你的问题,请参考以下文章

RAWINPUT - 如何获取鼠标滚轮数据

如何检测使用 USB HID API 推送的游戏手柄触发器?

浅析usbhid驱动如何源源不断的获取usb鼠标

HID 报告请求

2019-11-23-WPF-使用-RawInput-接收裸数据

用于辅助键盘的 OSX HID 过滤器?