赞
踩
首先不是所有的ESP32都支持USB直连。ESP32 S2和ESP32 S3是支持的,具体的如果是购买开发板询客服(当然不少卖板子的也是业余的一问三不知,当然可能知道就是单纯怕麻烦,毕竟这玩儿单价低)。如果你不确定哪些板子支持,也可以用本文的代码,通过选择不同的开发板来确定是否支持,如果不支持,就会报xxxx文件不存在的错误。
我使用的是ESP32 S3
#include <USB.h>
#include <USBHIDMouse.h>
#include <USBHIDKeyboard.h>
当然如果只需要模拟鼠标或键盘则定义其中一个即可
USBHIDMouse eps32_Mouse;
USBHIDKeyboard eps32_Keyboard;
eps32_Keyboard.begin();
eps32_Mouse.begin();
USB.begin();
通过以上在电脑里已经能正确识别为鼠标键盘了。
接下来的逻辑则是程序自身的逻辑处理,比如中断响应,网络响应,蓝牙响应。
这两个类的函数都很简单
鼠标类主要函数如下:
void click(uint8_t b = MOUSE_LEFT);
void move(int8_t x, int8_t y, int8_t wheel = 0, int8_t pan = 0);
void press(uint8_t b = MOUSE_LEFT); // press LEFT by default
void release(uint8_t b = MOUSE_LEFT); // release LEFT by default
bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default
键盘主要函数如下:
size_t write(uint8_t k);
size_t write(const uint8_t *buffer, size_t size);
size_t press(uint8_t k);
size_t release(uint8_t k);
void releaseAll(void);
void sendReport(KeyReport* keys);
//raw functions work with TinyUSB's HID_KEY_* macros
size_t pressRaw(uint8_t k);
size_t releaseRaw(uint8_t k);
这里需要注意的是cap之类的,因为有可能机器本身是有物理或者其它键盘的。这些状态可能就不一致。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。