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

2021-10-20 10:59:55 浏览数 (1)

ESP32蓝牙键盘库的位置

代码语言:javascript复制
https://github.com/T-vK/ESP32-BLE-Keyboard
代码语言:javascript复制
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

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

使用的时候调用的库

代码语言:javascript复制
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的库是有一些媒体按键,就是播放暂停什么的

代码语言:javascript复制
BleKeyboard bleKeyboard("Bluetooth Device Name", "Bluetooth Device Manufacturer", 100);

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

代码语言:javascript复制
bleKeyboard.setDelay(10)

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

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

下面是更加数据化的内容

代码语言:javascript复制
#define USE_NIMBLE
#include <BleKeyboard.h>

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

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

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

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

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

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

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

去源码看看

press这不是就摁了吗?

接下来这不就释放了吗

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

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

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

一开始n=0

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

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

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

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

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

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

代码语言:javascript复制
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)

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

还有一个这样的函数吗?

代码语言:javascript复制
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不错子~

媒体按键的调用

快捷键的编组使用

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

代码语言:javascript复制
https://github.com/arduino-libraries/Keyboard/

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

0 人点赞