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_TRACK KEY_MEDIA_PREVIOUS_TRACK KEY_MEDIA_STOP KEY_MEDIA_PLAY_PAUSE KEY_MEDIA_MUTE KEY_MEDIA_VOLUME_UP KEY_MEDIA_VOLUME_DOWN KEY_MEDIA_WWW_HOME KEY_MEDIA_LOCAL_MACHINE_BROWSER // 在 Windows 上打开“我的电脑” KEY_MEDIA_CALCULATOR KEY_MEDIA_WWW_BOOKMARKS KEY_MEDIA_WWW_SEARCH KEY_MEDIA_WWW_STOP KEY_MEDIA_WWW_BACK KEY_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 A Keyboard.write('A'); // same thing as a quoted character Keyboard.write(0x41); // same thing in hexadecimal Keyboard.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的库来的,所以大家可以看这个库掌握最初的设计思想。 |
|