分享

ESP32蓝牙模拟键盘(工作笔记)

 云深无际 2021-11-03

ESP32蓝牙键盘库的位置

https://github.com/T-vK/ESP32-BLE-Keyboard
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

蓝牙库诞生于USB的库中,所以keyboard全为blekeyboard

使用的时候调用的库

KEY_MEDIA_NEXT_TRACKKEY_MEDIA_PREVIOUS_TRACKKEY_MEDIA_STOPKEY_MEDIA_PLAY_PAUSEKEY_MEDIA_MUTEKEY_MEDIA_VOLUME_UPKEY_MEDIA_VOLUME_DOWNKEY_MEDIA_WWW_HOMEKEY_MEDIA_LOCAL_MACHINE_BROWSER // 在 Windows 上打开“我的电脑”KEY_MEDIA_CALCULATORKEY_MEDIA_WWW_BOOKMARKSKEY_MEDIA_WWW_SEARCHKEY_MEDIA_WWW_STOPKEY_MEDIA_WWW_BACKKEY_MEDIA_CONSUMER_CONTROL_CONFIGURATION // 媒体选择KEY_MEDIA_EMAIL_READER

ble的库是有一些媒体按键,就是播放暂停什么的

BleKeyboard bleKeyboard("Bluetooth Device Name", "Bluetooth Device Manufacturer", 100);

使用前需要写一下这个,你模拟的设备的名字以及设备制造商的名字,以及一个电量,当然是假的。

bleKeyboard.setDelay(10)

这个是设置延时时间,就是有的设备会丢掉输入快的字符。默认是8

如果真的要用,也可以设置一下这个,节省空间嗷

下面是更加数据化的内容

#define USE_NIMBLE#include <BleKeyboard.h>

使用的时候,把这个宏写上就好。

上面就是模拟按下一个按键,下面是模拟所谓的媒体键

注意一下,就是摁下去了。

release是对应的上面松开,后面是全松开

看下乱入的这个wirte,是个啥?

最后这个函数的参数有点没有看懂

就是按下+松开的结合体。组合按键及其有用,比如模拟各种快捷键。

去源码看看

press这不是就摁了吗?

接下来这不就释放了吗

我又去看看size_t是个啥,就当成一个int看

那对比的看就是相当于,后面的这个函数

传了好多的单独的这样的按键,以至于使用了一个缓冲的空间

一开始n=0

循环减去次数,每次循环里面都去判断缓冲里面的东西不等于

这个回车,因为就是一行一串命令嘛

里面循环的载调用write函数(有点递归的感觉),每次执行变量n+1

当没有可以执行的串就break,注意是全跳出循环

当size为0时,返回一个最终的计数值n。

注意这个代码是一串字符加一个回车,是一个要发送的命令列

Keyboard.write(65); // sends ASCII value 65, or AKeyboard.write('A'); // same thing as a quoted characterKeyboard.write(0x41); // same thing in hexadecimalKeyboard.write(0b01000001); // same thing in binary (weird choice, but it works)

写入的参数可以是这样的,返回值是一个字节数

还有一个这样的函数吗?

BleKeyboard bleKeyboard;
void setup(){ Serial.begin(115200); Serial.println("Starting BLE work!"); bleKeyboard.begin();}
void loop(){Hello world
if (bleKeyboard.isConnected()){ Serial.println("Sending 'Hello world'..."); bleKeyboard.print("Hello world");
delay(1000);
Serial.println("Sending Enter key..."); bleKeyboard.write(KEY_RETURN);
delay(1000);
Serial.println("Sending Play/Pause media key..."); bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE);
delay(1000);
Serial.println("Sending Ctrl+Alt+Delete..."); bleKeyboard.press(KEY_LEFT_CTRL); bleKeyboard.press(KEY_LEFT_ALT); bleKeyboard.press(KEY_DELETE); delay(100); bleKeyboard.releaseAll(); }
Serial.println("Waiting 5 seconds..."); delay(5000);}

自带的demo不错子~

媒体按键的调用

快捷键的编组使用

我迷惑一点是,我都刷过这个程序了,居然现在屏幕还亮着。

https://github.com/arduino-libraries/Keyboard/

最后补一点,ble是从USB的库来的,所以大家可以看这个库掌握最初的设计思想。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多