前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP32蓝牙模拟键盘(工作笔记)

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

作者头像
云深无际
发布2021-10-20 10:59:55
3.6K0
发布2021-10-20 10:59:55
举报
文章被收录于专栏:云深之无迹

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的库来的,所以大家可以看这个库掌握最初的设计思想。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档