计划
这是一个伟大的计划
- 按键6个, 矩阵扫描的方式获取
- 蓝牙键盘
- 配置这个六个按键的快捷键(比如
key1
的模拟 ctr+alt+L) - oled显示模式和游戏界面
- 倒计时旋钮
环境
ESP32Cam
https://github.com/T-vK/ESP32-BLE-Keyboard- 引脚使用
2 13 12 14 15
- 蓝牙库 https://gitcode.net/mirrors/T-vK/ESP32-BLE-Keyboard?utm_source=csdn_github_accelerator
第一步: 蓝牙键盘
press的对应键码表
1 键盘左边ctrl --- KEY_LEFT_CTRL
2 键盘左边shift --- KEY_LEFT_SHIFT
3 键盘左边alt --- KEY_LEFT_ALT
4 键盘左边win --- KEY_LEFT_GUI
5 键盘右边ctrl --- KEY_RIGHT_CTRL
6 键盘右边shift --- KEY_RIGHT_SHIFT
7 键盘右边alt --- KEY_RIGHT_ALT
8 键盘右边win --- KEY_RIGHT_GUI
9 方向键上 --- KEY_UP_ARROW
10 方向键下 --- KEY_DOWN_ARROW
11 方向键左 --- KEY_LEFT_ARROW
12 方向键右 --- KEY_RIGHT_ARROW
13 退格键 --- KEY_BACKSPACE
14 tab键 --- KEY_TAB
15 回车键 --- KEY_RETURN
16 esc键 --- KEY_ESC
17 insert键 --- KEY_INSERT
18 delete键 --- KEY_DELETE
19 page up键 --- KEY_PAGE_UP
20 page down键 --- KEY_PAGE_DOWN
21 home键 --- KEY_HOME
22 end键 --- KEY_END
23 capslock键 --- KEY_CAPS_LOCK
24 F1 --- KEY_F1
25 F2 --- KEY_F2
26 F3 --- KEY_F3
27 F4 --- KEY_F4
28 F5 --- KEY_F5
29 F6 --- KEY_F6
30 F7 --- KEY_F7
31 F8 --- KEY_F8
32 F9 --- KEY_F9
33 F10 --- KEY_F10
34 F11 --- KEY_F11
35 F12 --- KEY_F12
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 // Opens "My Computer" on 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 // Media Selection
KEY_MEDIA_EMAIL_READER
注意: 如果要输出空格输入32就可以了因为,32对应ACSII码表为空格
注意: press 和 release 成对出现
第二步: 导入蓝牙键盘库
加载 source/ESP32-BLE-Keyboard.zip
2.1 基础操作
连上蓝牙后, 不停地发送helloworld
src/SendKeyStrokes/SendKeyStrokes.ino
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
#include <BleKeyboard.h>
BleKeyboard bleKeyboard;
void setup() {
Serial.begin(115200);
Serial.println("Starting BLE work!");
bleKeyboard.begin();
}
void loop() {
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("Waiting 5 seconds...");
delay(5000);
}
待续…