Windows 数字化器类输入设备--笔设备分析(1)(原创)
一、前言:
参考microsoft公司的链接:https://developer.microsoft.com/zh-cn/windows/hardware
将对Windows数字化器类输入设备--笔设备进行分析
触摸界面在各类设备上随处可见,从移动电话、平板电脑、网亭到 30 英寸的水平/垂直显示器。
通过对microsoft提供的适用于各种 Windows 触摸技术的实现和验证指南学习,进一步了解,便于研发。
二、笔实现指南
2.1Windows 笔设计
与用户交互的物理笔设备可能具有多种工业设计。但是,所有兼容集成的 Windows 10 笔设备具有压力敏感笔尖和擦除提示。
擦除提示可以作为笔上的物理按钮或末端擦除按钮实现(类似于传统的铅笔)。
下图说明了这些潜在的实现;左侧带有末端擦除按钮的笔和右侧带有擦除按钮的笔。

2.2设备总线连接
集成的 Windows 笔设备可以使用 Microsoft 提供的内置驱动程序来使用 HID over USB 或 HID over I²C 连接到其 Windows 主机。
你还可以使用想要的任何其他总线,只要你为笔设备提供的所需第三方 HID 微型端口驱动程序兼容 Windows。
下图显示了适用于 Windows 笔设备的 Windows 10 驱动程序堆栈。

其中重点关注HID over USB 技术;
基本方案是:
参考技术链接:https://baike.baidu.com/item/%E6%95%B0%E4%BD%8D%E6%9D%BF/980649?fr=aladdin
2.3电源管理
电源消耗
各种集成 Windows 笔电源模式的电源消耗要求由 OEM 或系统组装商制定。但是,Windows 提供的设备可帮助平衡电源效率和响应延迟。
I²C 设备(非重点关注)
通过 I²C 连接的集成 Windows 笔设备可以实现对最多四种不同电源状态的支持:
- 活动
- 空闲
- 睡眠或准备唤醒(两者皆可选)
- 关闭
下图显示了四种电源状态以及造成状态转换的设备活动。
活动状态
Active 状态定义为笔处于屏幕表面的范围内的设备操作模式,或最近 30 秒有活动的操作模式。当电源应用到笔设备,然后设备启动完成之后,该设备应准备就绪并处于 Active 电源状态。
空闲状态
Idle 状态定义为最近 30 秒内未发生任何活动的设备操作模式。
在此模式下设备会选择降低其扫描率以降低电源消耗,同时仍遵守此模式的按下延迟要求。设备检测到活动后,它应转换回 Active 状态。
睡眠(准备唤醒)状态
Sleep 状态定义为主机向设备发送 HID I²C“SET_POWER SLEEP”命令后设备所进入的操作模式。
在此模式下,设备可以选择显著降低其扫描率以降低电源消耗,同时仍能够断言中断以唤醒系统,从而响应合格活动。集成 Windows 笔设备应确保中断不针对虚假触点断言,因为此类触点将导致意外系统唤醒。此模式不存在按下延迟要求。
该设备在接收到来自主机的 HID I²C “SET_POWER ON”命令后应转换为 Active 状态。
关闭状态
Off 状态定义为设备完全关闭其电源的操作模式。当设备接通电源,然后完成设备启动之后,该设备应准备就绪并处于活动电源状态。设备启动应在计算机屏幕初始化并启用前完成。
在 Off 状态下,设备不应消耗任何电源。
USB 设备
通过 USB 连接到主机的集成 Windows 笔设备可以实现对最多四种不同电源状态的支持:
- 活动
- 空闲
- 睡眠或准备唤醒(两者皆可选)
- 关闭
下图显示了四种电源状态以及造成状态转换的设备活动。

活动状态
活动状态定义为主机未暂停设备的设备操作模式。当电源应用到笔设备,然后设备启动完成之后,该设备应准备就绪并处于活动电源状态。
设备应遵守此模式的触点按下延迟和触点移动延迟要求。
空闲状态
空闲状态定义为以下情况下的设备操作模式:在主机定义的时间段内未发生接触或按钮活动,而设备因此暂停时。这称为“USB 选择性暂停”。
通过 USB 连接到其主机的所有集成 Windows 笔设备都应该支持选择性暂停。此类设备应通过 Microsoft 操作系统描述符报告此功能。
在此模式下,笔设备会选择降低其扫描率以减少电源消耗,同时仍遵守此模式的按下延迟要求。
设备检测到合格活动后,它应发出远程唤醒信号。从检测到活动开始,设备应当缓冲至少相当于 100 毫秒的接触报告,以确保在 USB 主控制器恢复时丢失极小甚至不丢失输入。
睡眠(准备唤醒)状态
睡眠状态定义为主机已转换为 S3 或连接待机的设备操作模式。此状态通过延迟模式功能报告向笔设备指示,值为“1”表示允许的最大延迟。设备在检测到活动时应退出此高延迟模式,并响应“主机恢复”。
在此模式下,设备可以选择显著降低其扫描率以减少电源消耗,同时仍能发出远程唤醒信号(响应合格活动)来唤醒系统。集成 Windows 笔应确保远程唤醒不会因为响应虚假触点而发出信号,因为这将导致意外系统唤醒。此模式不存在触点按下延迟要求。
关闭状态
关闭状态定义为该设备完全关闭其电源的设备操作模式。当设备接通电源,然后完成设备启动之后,该设备应准备就绪并处于活动电源状态。设备启动应在初始化并启用计算机屏幕前完成。
在关闭状态下,笔设备不应消耗任何电源。
2.4笔协议实现
有关 HID 协议的信息,请参阅以下资源:
根据 Windows 10 HLK 要求,如果你希望笔设备通过备用总线进行连接,则可能需要第三方 HID 微型端口驱动程序,并且受到支持。你只需在集成 Windows 笔设备固件中报告本主题描述的使用方法。
Windows 将使用固件及其 HID 驱动程序启用设备的笔和墨迹功能,并且还会向 Windows 应用程序提供访问该设备的权限。
示例报告描述符主题将提供示例描述符。
2.4.1所需的 HID 描述符
2.4.2所需的 HID 顶级集合
2.4.3Windows 笔状态
2.4.4示例报告描述符
三、笔验证指南
Windows 数字化器类输入设备--笔设备分析(1)(原创)的更多相关文章
- WPF 不要给 Window 类设置变换矩阵(分析篇):System.InvalidOperationException: 转换不可逆。
原文:WPF 不要给 Window 类设置变换矩阵(分析篇):System.InvalidOperationException: 转换不可逆. 最近总是收到一个异常 "System.Inva ...
- Windows下使用doxygen阅读和分析C/C++代码
Windows下使用doxygen阅读和分析C/C++代码 转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html 虽然使用各种IDE或者Sou ...
- Android中Input型输入设备驱动原理分析(一)
转自:http://blog.csdn.net/eilianlau/article/details/6969361 话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反 ...
- Android中Input型输入设备驱动原理分析<一>
话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反正这个是没变的,在android的底层开发中对于Linux的基本驱动程序设计还是没变的,当然Android底层机制也 ...
- 与众不同 windows phone (21) - Device(设备)之摄像头(拍摄照片, 录制视频)
原文:与众不同 windows phone (21) - Device(设备)之摄像头(拍摄照片, 录制视频) [索引页][源码下载] 与众不同 windows phone (21) - Device ...
- 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器
原文:与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 [索引页][源码下载] 与众不同 windows phon ...
- Windows五种IO模型性能分析和Linux五种IO模型性能分析
Windows五种IO模型性能分析和Linux五种IO模型性能分析 http://blog.csdn.net/jay900323/article/details/18141217 http://blo ...
- usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备
在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...
- USB设备不能用。提示Windows 无法启动这个硬件设备。 (代码 19)
USB,由于其配置信息(注册表中的)不完整或已损坏, Windows 无法启动这个硬件设备. (代码 19) 原因:提示Windows 无法启动这个硬件设备. (代码 19) 处理解决方法: 1) r ...
随机推荐
- Spine用于Timeline(NullReferenceException: Object reference not set to an instance of an object pine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI ())
报错信息:Spine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI () (at Assets/Extention/Spine/E ...
- deepfake-faceswap第一篇论文-2016摘要
核心目标:给定一个人的单张图片A,另一个人的单张图片B,在保持姿势,面部表情,视线方向,发型和光照不变的条件下,将A图片中的人物换成B图片中的人物.2016年,文章[1]实现了这个目标: 德国的蒂宾根 ...
- Java的命名规范
1.类名.接口名:首单词的第一个字母要大写.如果有多个单词,其他单词的首字母要大写. 2.包名:全部小写. 3.变量名.方法名:首单词的第一个字母小写.如果有多个单词,其他单词的首字母要大写. 4.常 ...
- holer实现外网访问本地tomcat
外网访问内网Tomcat 内网主机上安装了Tomcat,只能在局域网内访问,怎样从公网也能访问本地Tomcat? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装Java 1.7 ...
- IDEA Maven项目默认编译器使用JDK1.5的解决办法
在idea中创建maven项目,项目指定用jdk1.8编译,每次更新maven库后,都会重新变成1.5.解决方案: 第一种: 在pom文件中,增加如下代码: <properties> &l ...
- https://www.cnblogs.com/soundcode/p/4174410.html
https://www.cnblogs.com/soundcode/p/4174410.html 1.首先要在服务器端新建一个网站axpx页 然后再网站的后台写代码获取winform传过来的文件名. ...
- lvm语法
RAID: Redundant Arrays of Inexpensive Disks Independent Berkeley: ...
- HAProxy原理和配置
HAProxy原理和配置 目录 1.HAProxy简介 2.haproxy安装和配置说明 proxies配置参数 bind配置 Balance配置 基于cookie的会话绑定 统计接口启用相关的参数 ...
- Graphics Class
System.Drawing 封装一个 GDI+ 绘图图面. 此类不能被继承. https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.g ...
- js 冒泡排序与快速排序
刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来. 1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换.否则的话当前元素再与下下个元素比较,一直到 ...