stm32实现hid键盘

 前面的cubelmx项目配置参考

stm32实现hid鼠标-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/anlog/article/details/137814494?spm=1001.2014.3001.5502两个项目的配置完全相同。

代码

引用

键盘代码:

替换hid设备描述符

先屏蔽鼠标设备描述符

替换为键盘设备描述符

修改宏定义

 修改大小为63U

 运行后如下图

参考链接

参考宝藏ub主

3分钟,教会你做键盘。使用STM32 USB的HID 方式制作一个键盘_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1dA4m1c7VE/?spm_id_from=333.999.0.0&vd_source=e821a225c7ba4a7b85e5aa6d013ac92e

HID键盘设备 - 哔哩哔哩 (bilibili.com)icon-default.png?t=N7T8https://www.bilibili.com/read/cv33532705/?spm_id_from=333.999.0.0

 

/** buffer[0] - bit0: Left CTRL*           -bit1: Left SHIFT*           -bit2: Left ALT*           -bit3: Left GUI(win)*           -bit4: Right CTRL*           -bit5: Right SHIFT*           -bit6: Right ALT*           -bit7: Right GUI ()* buffer[1] - Padding = Always 0x00* buffer[2] - Key 1* buffer[3] - Key 2* buffer[4] - Key 3* buffer[5] - Key 4* buffer[6] - Key 5* buffer[7] - Key 6*//*修改usbd_hid.c中的报告设备描述符*/__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END ={0x05, 0x01, // USAGE_PAGE (Generic Desktop) //630x09, 0x06, // USAGE (Keyboard)0xa1, 0x01, // COLLECTION (Application)0x05, 0x07, // USAGE_PAGE (Keyboard)0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)0x15, 0x00, // LOGICAL_MINIMUM (0)0x25, 0x01, // LOGICAL_MAXIMUM (1)0x75, 0x01, // REPORT_SIZE (1)0x95, 0x08, // REPORT_COUNT (8)0x81, 0x02, // INPUT (Data,Var,Abs)0x95, 0x01, // REPORT_COUNT (1)0x75, 0x08, // REPORT_SIZE (8)0x81, 0x03, // INPUT (Cnst,Var,Abs)0x95, 0x05, // REPORT_COUNT (5)0x75, 0x01, // REPORT_SIZE (1)0x05, 0x08, // USAGE_PAGE (LEDs)0x19, 0x01, // USAGE_MINIMUM (Num Lock)0x29, 0x05, // USAGE_MAXIMUM (Kana)0x91, 0x02, // OUTPUT (Data,Var,Abs)0x95, 0x01, // REPORT_COUNT (1)0x75, 0x03, // REPORT_SIZE (3)0x91, 0x03, // OUTPUT (Cnst,Var,Abs)0x95, 0x06, // REPORT_COUNT (6)0x75, 0x08, // REPORT_SIZE (8)0x15, 0x00, // LOGICAL_MINIMUM (0)0x25, 0x65, // LOGICAL_MAXIMUM (101)0x05, 0x07, // USAGE_PAGE (Keyboard)0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)0x81, 0x00, // INPUT (Data,Ary,Abs)0xc0,       // END_COLLECTION};#include “usbd_hid.h” 文件中的申明文件,修改一下。#define HID_MOUSE_REPORT_DESC_SIZE    63U 

HID Usages and Descriptions (gitee.com)icon-default.png?t=N7T8https://gitee.com/siyu233/Stm32Code_1/raw/master/USB_HID_keyboard/hut1_HID_22.pdf

 

 

 

 

 学习过程

特此记录

anlog

2024年4月16日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623225.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ 01 Linux安装

RocketMQ 01 主要内容: 编译安装HelloWorld官网名词 官方网站 http://rocketmq.apache.org GitHub https://github.com/apache/rocketmq Quick Start Linux下使用Maven编译源码安装 Rocketmq4.6需要jdk1.8环境编译和运行 各版本要求 VersionClientBroke…

RabbitMQ实战教程(2)

十、RabbitMQ实战教程 在掌握了SpringCloudAlibaba的应用后,再来玩!! 为了更好的理解RabbitMQ在项目中的作用,来一套实战操作。 10.1 RabbitMQ实战场景 首先模拟一个场景,电商中对应的处理方案。 模拟一个用户在电…

武汉好地科技教你如何辨别CMMI认证证书的真假

现在的CMMI V3.0版本是通过集成的产品套件可将业务目标直接与运营和能力相关联,从而推动在时间、质量、预算、客户满意度和其他关键驱动力的改进并取得可量化的卓越表现。 之前我们武汉好地科技咨询老师也公布了取得CMMI3-CMMI5认证证书的企业名单,从名…

如何在Windows使用固定公网地址SSH远程访问本地Archcraft系统

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 Archcraft是一个基于Arch Linux的Linux发行版,它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。 C…

设计模式代码实战-观察者模式

1、问题描述 小明所在的学校有一个时钟(主题),每到整点时,它就会通知所有的学生(观察者)当前的时间,请你使用观察者模式实现这个时钟通知系统。 注意点:时间从 0 开始,并…

【网络编程】UDP实现回显服务器

一.网络编程的基本术语. 客户端 客户端是为用户提供本地服务的程序,通常位于用户设备上。也称为用户端,是相对于服务器而言的。它主要指安装在用户设备上的程序,这些程序能够与服务器进行通信,从而获取服务或者执行特定功能。在…

【设计模式】笔记篇

目录标题 OO设计原则策略模式 - Strategy定义案例分析需求思路分析核心代码展示进一步优化UML 图 观察者模式 - Observe定义案例分析需求UML图内置的Java观察者模式核心代码 总结 装饰者模式 - Decorator定义案例分析需求UML图分析核心代码 总结 工厂模式 - Abstract Method/Fa…

excel 无法正确处理 1900-03-01 前的日期

问题由来:excel 用公式 TEXT(A1,"yyyy-mm-dd") 转日期时,当A1 的值等于59 的时候,返回值是1900-02-28;当A1 的值等于61 的时候,返回值是1900-03-01;那么当 A1的值为 60 的时候,返回值…

nfs服务器详解

nfs(网络文件系统)---------- 其实就是通过网络将文件共享出去。 通过TCP/IP网络去共享资源的。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 客户端和服务端需要去读写共…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程:​​​​​​QT初体验:手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程(添加QSerialPort模块)_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

文献学习-37-动态场景中任意形状针的单目 3D 位姿估计:一种高效的视觉学习和几何建模方法

On the Monocular 3D Pose Estimation for Arbitrary Shaped Needle in Dynamic Scenes: An Efficient Visual Learning and Geometry Modeling Approach Authors: Bin Li,† , Student Member, IEEE, Bo Lu,† , Member, IEEE, Hongbin Lin, Yaxiang Wang, Fangxun Zhong, Me…

iPaaS与ESB: 解密企业集成领域的两大利器差异

随着信息化发展不断深入,企业在不同的阶段引入了不同的应用、系统和软件,每个系统都有着独立的信息,渐渐的出现“数据孤岛”的现象。在这样的现象下,不同的企业集成系统应运而生,iPaaS(Integration Platfor…