You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自制串口手绘板接入Windows Inking框架?

问题

自制了一款手绘板,可通过串口向PC发送笔的位置、压力及姿态数据,希望将该设备接入Windows Inking平台。请问如何将自制手绘板接入Windows Inking框架,以便在系统中使用该框架的功能?

已尝试的方法

  • 查阅并运行了Windows.UI.Input.inking UWP API文档及相关Demo,确认该API仅适用于开发使用笔/触摸/鼠标输入的应用,无法用于开发输入设备驱动。
  • 尝试使用Input Injection(Windows.UI.Input.Preview.Injection)方案,但存在以下不足:
    • InjectedInputPenInfo中的X倾斜/Y倾斜属性为int类型,而InkCanvas接收的PointerPoint.Properties中的倾斜属性为float类型,会导致精度丢失;
    • PointerPoint.Properties包含ZDistance属性,但InjectedInputPenInfo无此属性,会导致数据丢失。

参考问题

如何在Windows中生成触控笔事件及压力数据?

解决方案

方案一:编写HID兼容驱动(推荐)

这是让设备完美适配Windows Inking的标准方式,系统会直接将你的手绘板识别为官方支持的笔输入设备,所有参数都能完整传递:

  1. 按照Windows HID笔设备规范(HID Usage Page 0x0D, Usage 0x02)设计HID报告描述符,包含位置(X/Y)、压力、X/Y倾斜、Z距离等需要的所有参数,确保数据格式符合系统要求。
  2. 使用**UMDF(User-Mode Driver Framework)**开发用户模式驱动:通过串口读取手绘板的原始数据,将其转换为符合HID规范的报告,再发送给Windows输入栈。
  3. 驱动安装完成后,系统会自动加载对应的笔输入支持,Windows Inking框架无需额外适配即可使用所有功能,精度和数据完整性完全有保障。

方案二:使用Raw Input API模拟笔输入

如果暂时不想开发驱动,可以用更底层的Raw Input API实现完整的笔输入模拟,弥补Input Injection的不足:

  1. 创建一个隐藏窗口,调用RegisterRawInputDevices注册笔输入设备,用于接收和发送Raw Input数据。
  2. 构造RAWINPUTHEADER和RAWINPUTPEN结构体:其中倾斜值可以通过HID单位映射实现高精度传递,Z距离可对应到RAWINPUTPEN中的相关HID字段(参考HID笔规范)。
  3. 调用SendInput函数发送构造好的Raw Input数据,系统会将其识别为原生笔输入,InkCanvas能完整接收包括浮点倾斜、Z距离在内的所有属性。
  4. 注意处理设备坐标到屏幕坐标的转换,以及HID单位与系统输入单位的映射关系。

内容的提问来源于stack exchange,提问作者lichao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:52:09