首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

USB HID键盘报告的大小可以超过8个字节吗?

USB HID键盘报告的大小不能超过8个字节。USB HID(Human Interface Device)是一种用于连接人机交互设备的通信协议,如键盘、鼠标等。HID键盘报告是指键盘向计算机发送的数据报告,用于传输按键信息。

根据USB HID规范,HID键盘报告的大小固定为8个字节。这8个字节包括了按键状态、修饰键状态和保留位等信息。每个按键都有一个对应的位,按下时为1,未按下时为0。修饰键(如Shift、Ctrl、Alt等)也有对应的位,用于表示修饰键的状态。

由于报告大小固定为8个字节,因此无法超过这个限制。如果需要传输更多的数据,可以考虑使用其他通信协议或者拆分数据进行多次传输。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云对象存储(COS):提供安全可靠的云端存储服务,适用于图片、音视频、文档等各类数据的存储和管理。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于STM32CUBEUSB鼠标键盘二合一

这篇文章,我们试着同时在一个USB设备上,实现USB鼠标与键盘二合一。花一份钱,实现两样东西,它不香? 这里要说一下,实现鼠标键盘二合一功能,方法有多种,这里只说其中一种。...接口协议,由2(鼠标)变成1(键盘)。 有的小伙伴会奇怪,我们不是鼠标键盘二合一?怎么还是键盘? 作为一个技术人员,我们要学会透过现象看本质。...向USB主机发送数据时候,数组第一个元素是报告ID,后面才是键盘数据或鼠标数据。实现前面两节例程时候,USB键盘我们定义了一个8元素数组,USB鼠标我们定义了一个4元素数组。...现在我们只需要一个数组,它同一时间,只发送一种数据,所以大小为8,然后,还要包含报告ID,所以变成9. 在USB协议中,报告ID默认是数组第一个元素。...新建一个TXT文档,可以看到字母自动输出,同时鼠标左键每隔1秒被触发一下。 完整工程源码,我上传到了网盘,公众号后台回复关键词:USB键盘鼠标二合一,即可获得下载链接。

2.4K41

USB初学(一)---USB-HID初步认识【转】

从框图中,可以看出除了USB标准定义一些描述符外,HID设备还必须定义HID描述符。另外设备和主机通信是通过报告形式来实现,所以还必须定义报告描述符;而物理描述符不是必需。...BIOS启动时能识别并使用您HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。...USB HID类描述符结构 偏移量 域 大小 值 描述 0 bLength 1 数字 此描述符长度(以字节为单位) 1 bDescriptorType 1 常量 描述符种类(此处为0x21即HID类描述符...10 wDescriptorLength 2 数字 描述符总长度,使用在有一个以上描述符设备 报告描述符 报告描述符比较复杂,它是以item形式排列组合而成,无固定长途,用户可以自定义长度以及每一...和00100001有效 1 bRequest 1 HID类请求(参考下表) 2 wValue 2 高字节说明描述符类型 0x21:HID描述符 0x22:报告描述符 0x23:物理描述符 低字节为非

12.6K50
  • 原创 Paper | USB设备开发:从入门到实践指南(一)

    在运行上面的bash脚本后,如无意外,可以USB Tree View中查看到树莓派设备模拟出USB键盘。...2.1.6 HID报告描述符 当USB主机通过接口描述符得知USB设备是USB HID设备时,将会再获取HID报告描述符,在USBPcap中捕获到HID报告描述符如图21所示: 图21:Wireshark...报告描述符来源于Linux内核示例,如图22所示: 图22:Linux USB HID gadget 驱动文档 所以下一步我们需要能顺利阅读HID报告描述符,可以参考官方文档,官方文档优点是内容齐全,...(buf)) hid_handle.write(bytearray([0] * 8)) 每次操作按键需要向USB主机发送两个8字节buf(在端点描述符里限制了最大大小为8字节)。...到这里键盘HID报告描述符定义就分析完了,我们发现该描述符定义内容和我们输入数据格式是吻合。 发送buf第一字节就是表示8个控制按键,第二字节固定为0,后面6个字节为输入按键。

    1.7K00

    Linux驱动开发: USB驱动开发

    这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。 它是 USB 协议最早支持一种设备类。 HID 设备可以作为低速、全速、高速设备用。...除此之外, HID 设备还有三种特殊描述符: HID 描述符、报告描述符、物理描述符。一个 USB 设备只能支持一个 HID 描述符,但可以支持多个报告描述符,而物理描述符则可以有也可以没有。...3.3 报告描述符 HID 设备报告描述符是一种数据报表,主要用于定义 HID 设备和 USB 主机之间数据交换格式, HID 设备报告描述符类型值为 0x22。...报告描述符使用自定义数据结构,用于传输特定数据包。 例如: 对于键盘,需要在数据包中指明按键值,报告描述符把这些数据打包发给主机,主机对发来数据进行处理。...[data]:数据字节,随着前面 bSize 定义大小而变化。

    69.9K20

    基于STM32CUBEUSB键盘例程.docx

    前面说了USB鼠标,这次趁热打铁,说一下USB键盘。依然只说如何修改,不说背后原理。原因你懂,涉及知识点太多了。 会不会写成USB三部曲? 不知道 猜猜我下一步再写个啥?...上面提到了,之前是鼠标描述符,长度74,现在改成键盘描述符,长度63. 4 生成键盘报告描述符 把USB鼠标的报告描述符删掉,换成USB键盘报告描述符。...不会写USB键盘报告描述符怎么办? USB官方提供了一个USB报告描述符自动配置工具,打开!里面有各种例程,我们直接复制一个USB键盘报告描述符即可。 ?...获取报告描述符部分,之前这里是鼠标的报告描述符信息,现在换成了键盘。...新建一个TXT文档,看键盘自动输出字母,爽不爽? ? 完整工程源码,我上传到了网盘,公众号后台回复关键词:USB键盘,即可获得下载链接。 有想做游戏辅助童鞋,可以研究下~~~ 打完收工!

    74330

    一个蓝牙实战项目的掏肺总结

    他这个需求多少有点非主流,看着像是蓝牙键盘,但是物理上却是USB接口HID设备,并不是BLEHID,BLE在这里只是用来接收手机发送数据。...起初我也没太认真想如何实现,就随手发到我们嵌入式交流群里,各路高手们纷纷提出了自己方案: 群友喵了个咪方案是:单片机模拟USB键盘+蓝牙串口透传,可以用CH551+KT6368A,KT6368A可以参考之前写文章...:尝鲜1.6元蓝牙芯片KT6368A 群友heibus方案是:串口转USB HID芯片+蓝牙串口透传,可以用CH9328+KT6368A。...这么说还是有点抽象,来点更直观,电脑端我们可以用Bushound等USB分析软件,我这里用是Free USB Analyzer : 我用是笔记本电脑,先外接一个USB键盘 在软件左侧找到USB键盘对应设备...因为QN9021是BLE 4.0芯片,一次发送字节最多是20个字节,所以要考虑超过20字节情况。 蓝牙芯片一边蓝牙接收数据,一边串口发送数据,要考虑串口没有发送完,蓝牙又来数据情况。

    1.1K70

    基于STM32CubeMXUSB鼠标例程

    最近在玩STM32CUBEUSB功能,用起来还是挺方便。只要配置一下,设备描述符、配置描述符、接口描述符什么,都能给你自动生成,其中还包括比较复杂报告描述符。...自始至终,STM32CubeMX里,和主函数里没出现鼠标相关函数(除了我们自定义一个带鼠标字符数组),怎么就出来一个鼠标? 为什么不是键盘? 为什么不是优盘?...这个我可以回答,因为你选HID,而不是存储类设备。 为什么不是游戏手柄? 其实,你可以理解为,这是官方提供给我们一个鼠标例程。...在usb_hid.c文件中,有一个数组:USBD_HID_CfgFSDesc,其中一行: ? 单是这个还不够,还要结合报告描述符。也在这个文件内,名字是HID_MOUSE_ReportDesc。...无论是配置集合,还是报告描述符,这里都不做解释,因为一两篇文章根本说不完。这里只说一点,由于报告描述符规定,鼠标设备向电脑发送数据时候,一般是发送4个字节数据。

    1.6K20

    DIY一个专属HID注入设备吧

    *本文原创作者:kincaid,本文属FreeBuf原创奖励计划,未经许可禁止转载 一、引言 BadUSB是指一类通过模拟键盘自动输入指令,实现信息窃取和恶意程序执行HID攻击方法,最早由SRLabs...参考STM32F10X USB设备开发套件(STM32_USB-FS-Device_Lib_V4.0.0)中JoyStickMouse例程,按照lsj9383[1]思路对配置描述符和报告描述符进行修改...在电脑识别出HID设备基础上,调整端点收发缓存区分配,再配置设备Init和Reset函数。接着就可以用Joystick_Send函数发送按键数据,参数非零代表有键按下,全零则代表松开。...最后一个问题是主机输入法默认大小写及中英文环境不符合程序要求导致注入失败,这个可以通过模拟U盘中配置文件进行手动切换,下一章将详尽叙述。...三、模拟U盘 一个可以同时模拟出多个逻辑设备USB设备称为复合设备,复合设备具有高集成、低成本、多功能优点。

    1.5K00

    基于树莓派多功能USB实现--BadUSB模式

    HID键盘输入解析,这部分正好可以给Badusb使用。...剩下部分就是编写Payload解释器脚本 Payload在本文可以简单理解为实现Badusb单个功能(如Windows解锁,调用cmd窗口运行命令)流程脚本。 实现 本文采用第二种方案。...该实现分为三部分:模拟HID键盘, 模拟Payload解释器和内容输入 模拟HID键盘 初始环境设置 # Enable dwc2 on the Pi echo "dtoverlay=dwc2" | sudo...脚本实现 USB键盘数据包含8个字节: BYTE1 -- 特殊按键 |--bit0: Left Control 是否按下,按下为1 |--bit1: Left Shift 是否按下,按下为1...系统安装 基于树莓派多功能USB实现--显示屏和按键交互菜单 基于树莓派多功能USB实现--U盘模式和网卡模式 基于树莓派多功能USB实现--无线AP模式 ?

    2.9K20

    19.Linux-USB总线驱动分析

    USB可以热插拔硬件原理    在USB集线器(hub)每个下游端口D+和D-上,分别接了一个15K欧姆下拉电阻到地。这样,在集线器端口悬空时,就被这两个下拉电阻拉到了低电平。...集线器检测到这个状态后,它就报告USB主控制器(或者通过它上一层集线器报告USB主控制器),这样就检测到设备插入了。...,USB接口最大能接127个设备,我们连续插拔两次USB键盘,也可以看出,如下图所示: 7.我们再来看看hub_port_connect_change()->hub_port_init()函数是如何来实现连接...=USB_INTERFACE_CLASS_HID; //设置匹配USB接口类型为HID类, 因为USB_INTERFACE_CLASS_HID=0x03 //HID类是属于人机交互设备....bInterfaceProtocol=1也就是USB_INTERFACE_PROTOCOL_KEYBOARD时,表示USB键盘协议 如下图,我们也可以通过windows上也可以找到鼠标的协议号,也是

    8.7K91

    BadUSB前世今生:USB RUBBER DUCKY和Teensy USB

    这就是为什么会有一个无处不在USB标准HID或人机接口设备(Human Interface Device)。任何一个宣称是键盘HID设备都能够被大多数操作系统自动探测和接入。...不管它是Windows、Mac或安卓设备,键盘就是老大。 Freebuf小科普 HID(Human Interface Device)人机接口设备类别是Windows最早支持USB类别。...由其名称可以了解HID设备是计算机直接 与人交互设备,例如键盘、鼠标和游戏杆等。不过HID设备不一定要有人机接口,只要符合HID类别规范,就都是HID设备。 ?...结合计算机对键盘固有信任和速度超过1000字/分钟通过脚本模拟按键操作,传统安全对策都能够被USB橡皮鸭轻易绕过,即HID模拟攻击。...),危害程度大大削弱; ③USB RUBBER DUCKY和Teensy可以实现HID模拟攻击,尚未实现插入恶意代码功能; 参考链接: 1.USB Rubber Ducky主页:http://192.64.85.110

    3.7K100

    CTF流量分析之题型深度解析

    在CTF中,USB流量分析主要以键盘和鼠标流量为主。 ■ 键盘流量 USB协议数据部分在Leftover Capture Data域中,数据长度为八个字节。其中键盘击键信息集中在第三个字节中。...具体键位映射关系可参考:《USB键盘协议中键码》中HID Usage ID,链接:https://wenku.baidu.com/view/9050c3c3af45b307e971971e.html...根据《USB键盘协议中键码》中HID Usage ID将数据还原成键位。...练练手 安全评测人员在对某银行卡密码输入系统进行渗透测试,截获了一段通过USB键盘输入6位数字密码流量,其中也包含了一些其他无关USB设备流量,你能从中恢复出6位数字密码?...第二个字节可以看成是一个signed byte类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。第三个字节与第二字节类似,代表垂直上下移动偏移。

    5.3K51

    在Automation Runtime中如何使用扫码枪

    所以其实大多数条码扫描枪是可以不用安装驱动或软件,只有接口为 USB 串口模式和 USB HID 模式条码扫描枪才需要安装驱动。...目前市面上有很多 USB HID 扫码枪,他工作方式和键盘输入都是基于 USB HID 协议。...正因如此,我们可以在Automation Runtime 中使用键盘,也能使用 HID 扫码枪。...驱动库以及强大DvFrame帧驱动库,可以通过以上两种接口访问USB扫码枪,如下展示USB驱动库所展示例子程序。...仔细查看 USB 报文转换(USB HID to PS/2 Scan Code Translation Table): 通过这个报文转换,就可以知道 USB 扫码枪传送了什么样数据内容: 只要剔除了报文其他字符

    4.3K30

    安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器

    hl=zh-cn 一直以来就有一种想法,就是自己写一个APP将安卓手机模拟成鼠标/键盘,应急时候可以用来代替鼠标/键盘。...通过它将我们应用注册成具有HID特征蓝牙设备,并传送HID设备报告描述符。如果我们报告描述符没有问题,那么我们设备就会成功模拟想要HID设备。...可以看出这里用了2bit来表示,我们在实现媒体控制时候用来7个按钮分别对应7个bit,要将亮度控制集成进来就需要9个bit,显然超过一个字节。...纠结半天将媒体控制停止功能去掉,因为播放/暂停可以实现类似的功能。看到这里你也许会问,报告描述符一个Main Item不能超过8个Control?...最后结论是,暂时将所有Control控制在一个字节内,超过一个字节Control再慢慢研究。

    5.7K20

    【STM32F429】第9章 RL-USB各种USB描述符简介

    /USB_hardware 9.2 USB描述符概述(USB Descriptors) USB设备使用描述符报告其属性,描述符是具有定义格式数据结构。...每个描述符都以一个字节字段开始,该字段包含描述符中字节总数,然后是一个标识描述符类型字段。 将USB设备连接到USB总线时,主机通过总线枚举来识别和配置设备。...一个HID接口,带有一个用于内置键盘IN中断端点。 RL-USB支持用户在必要时可以选择覆盖USB描述符。当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...9.6 USB端点描述符(Endpoint Descriptor) 端点描述符(USB_ENDPOINT_DESCRIPTOR)为每个端点指定传输类型,方向,轮询间隔,以及最大分组大小。...数组大小(以字节为单位)是通过描述符第一个字节值减去2而得出。 UNICODE字符串描述符不是以NULL结尾。字符串长度是通过从描述符第一个字节值中减去2来计算

    53830

    【STM32F407】第9章 RL-USB各种USB描述符简介

    /USB_hardware 9.2 USB描述符概述(USB Descriptors) USB设备使用描述符报告其属性,描述符是具有定义格式数据结构。...每个描述符都以一个字节字段开始,该字段包含描述符中字节总数,然后是一个标识描述符类型字段。 将USB设备连接到USB总线时,主机通过总线枚举来识别和配置设备。...一个HID接口,带有一个用于内置键盘IN中断端点。 RL-USB支持用户在必要时可以选择覆盖USB描述符。当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...9.6 USB端点描述符(Endpoint Descriptor) 端点描述符(USB_ENDPOINT_DESCRIPTOR)为每个端点指定传输类型,方向,轮询间隔,以及最大分组大小。...数组大小(以字节为单位)是通过描述符第一个字节值减去2而得出。 UNICODE字符串描述符不是以NULL结尾。字符串长度是通过从描述符第一个字节值中减去2来计算

    52410

    【STM32H7】第9章 RL-USB各种USB描述符简介

    /USB_hardware 9.2 USB描述符概述(USB Descriptors) USB设备使用描述符报告其属性,描述符是具有定义格式数据结构。...每个描述符都以一个字节字段开始,该字段包含描述符中字节总数,然后是一个标识描述符类型字段。 将USB设备连接到USB总线时,主机通过总线枚举来识别和配置设备。...一个HID接口,带有一个用于内置键盘IN中断端点。 RL-USB支持用户在必要时可以选择覆盖USB描述符。当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...9.6 USB端点描述符(Endpoint Descriptor) 端点描述符(USB_ENDPOINT_DESCRIPTOR)为每个端点指定传输类型,方向,轮询间隔,以及最大分组大小。...数组大小(以字节为单位)是通过描述符第一个字节值减去2而得出。 UNICODE字符串描述符不是以NULL结尾。字符串长度是通过从描述符第一个字节值中减去2来计算

    57820

    原创 Paper | USB设备开发:从入门到实践指南(二)

    1 模拟鼠标 参考资料 在上一篇Paper中,我们尝试对USB键盘进行模拟,下一步再尝试对USB鼠标设备进行模拟。...在能成功模拟键盘基础上,要实现鼠标的模拟是很容易,只需在模拟键盘bash脚本中以下修改两部分: 1....上述三部分总共占据了6字节,因为定义了一个USB中断传输为8字节,所以还可以加上2字节padding,不添加也不会造成问题,内核不会因此而报错。...2 模拟 USB 游戏手柄 参考资料 第二部分就是本篇核心内容:模拟一个USB游戏手柄。 该部分内容说简单也简单,在能成功模拟USB鼠标键盘之后,也可以很容易模拟出一个USB游戏手柄。...4 本篇总结 参考资 通过本篇文章,我们了解了如何模拟一个USB鼠标,USB游戏手柄设备,并且可以学习如何对Linux内核中HID驱动进行修改然后输出相关调试信息。

    21110

    硬件笔记(8)----USB学习笔记5

    偏移 字段 大小字节) 说明 0 bLength 1 该描述符长度 = 18 个字节 1 bDescriptorType 1 描述符类型 = 设备(01h) 2 bcdUSB 2 USB 规范版本(...bMaxPacketSize 会报告由端点 0 支持数据包最大字节数量。根据设备,数据包大小可以为 8 个字节、16 个字节、32 个字节和 64 个字节。...该值报告了本配置字节总数以及一个配置所需接口和端点描述符。 bNumInterfaces 则定义了在该指定配置中接口总数。最小为 1 个接口。...例如,对于 HID 类设备,开发者必须将报告描述符添加到描述符文件内,用于定义其他设备属性。如果需要额外描述符,可以在类定义规范或其他类支持文档中查找相关描述符格式。...更多有关报告描述符信息,请参考 AN57473 — PSoC®3 和 PSoC 5LP USB HID 初级应用笔记以及 AN58726 — PSoC®3 和 PSoC 5LP USB HID

    1.7K20

    使用stm32cubeMX生成模板,配置stm32f103c8t6键鼠一体化

    引脚设置为GPIO_EXTI1 NVIC中使能EXTI line1 interrupt RCC中HSE选择Crystal/ceramic Resonator SYS中Debug选择serial wire USB...中勾选Device(FS) USB_DEVICE中Class选择HID 设备描述符修改vid和pid值(避免和连接到电脑上其他usb设备冲突而引起错误) GPIO中pa1配置成Pull-down(按键接...修改USBD_HID_CfgFSDesc(HID设备全速配置描述符) *USB_HID_CONFIG_DESC_SIZ 大小改为41U image.png *Descriptor of Joystick...修改报告描述符HID_MOUSE_ReportDesc *替换报告描述符内容为 //将整个报告描述符复制替换过去, 其中键盘REPORT_ID是1,鼠标REPORT_ID是2 0x05, 0x01...*声明并建立函数void key_test_tunc(void) void key_test_func(void) { KeyBoard[3] = 8;//e,修改并发送KeyBoard[3]值触发不同按键

    1.2K60
    领券