USB鼠标的数据格式

USB鼠标的数据格式由HID(Human Interface Device)协议定义,通常包含3个字节的标准数据,具体格式如下:

字节 内容 描述
第1字节 按键状态 Bit 0: 左键按下(1)<br>Bit 1: 右键按下(1)<br>Bit 2: 中键按下(1)<br>Bit 3-7: 保留或设备特定功能
第2字节 X轴移动量 表示鼠标在X方向上的相对移动量,范围为-127到+127。
第3字节 Y轴移动量 表示鼠标在Y方向上的相对移动量,范围为-127到+127。

数据格式说明

  1. 按键状态

    • Bit 0 = 1:左键按下

    • Bit 1 = 1:右键按下

    • Bit 2 = 1:中键按下

    • Bit 3-7:保留或用于设备特定功能。

  2. 移动量

    • X轴和Y轴的移动量是相对值,表示鼠标相对于上一次报告的移动距离。

    • 如果移动量超出-127到+127的范围,可能会触发溢出标志(通常在第1字节的Bit 6和Bit 7中表示)。

  3. 扩展数据

    • 有些鼠标可能包含第4字节,用于表示滚轮的移动量。

示例

假设接收到的数据为:0x01, 0x05, 0xF0,其含义为:

  • 第1字节:0x01,表示左键按下。

  • 第2字节:0x05,表示鼠标在X方向上向右移动了5个单位。

  • 第3字节:0xF0,表示鼠标在Y方向上向上移动了16个单位(0xF0 = -16,因为是补码表示)。

通过解析这些数据,可以实现对鼠标位置和按键状态的实时监控。

相关推荐
LuminousCPP1 天前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
1 天前
数据结构第一课:复杂度解析
数据结构
欧叶冲冲冲1 天前
Python常见数据结构的CRUD(LeetCode高频版速查)
数据结构·python·leetcode
_Narcissus_1 天前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
Lyyaoo.1 天前
【普通数组】【中等】除了自身以外数组的乘积
数据结构·算法·leetcode
疯狂打码的少年2 天前
【数据结构】八大排序算法对比总结(时间/空间/稳定性)
数据结构·笔记·算法
Awh-2 天前
数据结构 第六章:哈希存储
数据结构·算法·哈希算法
TAN-90°-2 天前
Deep Learning for Computer Vision——Recurrent Neural Networks
数据结构·人工智能·rnn·深度学习·神经网络·机器学习·计算机视觉
wabs6662 天前
关于栈【力扣150.逆波兰表达式求值的思考】
数据结构·c++·算法·leetcode··代码随想录
闻缺陷则喜何志丹2 天前
【计算几何 第10章】更多几何数据结构:截窗
数据结构·数学·线段树·计算几何·截窗·优先查找树·区间树