ESP32模拟鼠标键盘

首先不是所有的ESP32都支持USB直连。ESP32 S2和ESP32 S3是支持的,具体的如果是购买开发板询客服(当然不少卖板子的也是业余的一问三不知,当然可能知道就是单纯怕麻烦,毕竟这玩儿单价低)。如果你不确定哪些板子支持,也可以用本文的代码,通过选择不同的开发板来确定是否支持,如果不支持,就会报xxxx文件不存在的错误。

我使用的是ESP32 S3 

包含如下头文件。

#include
#include
#include

定义两个鼠标和键盘对象

当然如果只需要模拟鼠标或键盘则定义其中一个即可

USBHIDMouse eps32_Mouse;

USBHIDKeyboard eps32_Keyboard;

在setup函数里初使化鼠标键盘

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之类的,因为有可能机器本身是有物理或者其它键盘的。这些状态可能就不一致。

你可能感兴趣的:(计算机外设)