AwesomeStudioPedal
A programmable, multi-profile foot controller for DAWs, score readers, and studio automation
Loading...
Searching...
No Matches
i_ble_keyboard.h
Go to the documentation of this file.
1#pragma once
2#include <cstdint>
3
9using MediaKeyReport = uint8_t[2];
10
11// Key constants: define only when BleKeyboard.h has not been included,
12// so that firmware TUs that include both headers don't get redefinitions.
13// Values are identical to BleKeyboard.h (USB HID codes).
14#ifndef ESP32_BLE_KEYBOARD_H
15// Arrow keys
16const uint8_t KEY_LEFT_ARROW = 0xD8;
17const uint8_t KEY_RIGHT_ARROW = 0xD7;
18const uint8_t KEY_UP_ARROW = 0xDA;
19const uint8_t KEY_DOWN_ARROW = 0xD9;
20// Navigation
21const uint8_t KEY_PAGE_UP = 0xD3;
22const uint8_t KEY_PAGE_DOWN = 0xD6;
23const uint8_t KEY_HOME = 0xD2;
24const uint8_t KEY_END = 0xD5;
25const uint8_t KEY_INSERT = 0xD1;
26const uint8_t KEY_DELETE = 0xD4;
27// Control
28const uint8_t KEY_BACKSPACE = 0xB2;
29const uint8_t KEY_TAB = 0xB3;
30const uint8_t KEY_RETURN = 0xB0;
31const uint8_t KEY_ESC = 0xB1;
32const uint8_t KEY_CAPS_LOCK = 0xC1;
33const uint8_t KEY_PRTSC = 0xCE;
34// Modifiers
35const uint8_t KEY_LEFT_CTRL = 0x80;
36const uint8_t KEY_LEFT_SHIFT = 0x81;
37const uint8_t KEY_LEFT_ALT = 0x82;
38const uint8_t KEY_LEFT_GUI = 0x83;
39const uint8_t KEY_RIGHT_CTRL = 0x84;
40const uint8_t KEY_RIGHT_SHIFT = 0x85;
41const uint8_t KEY_RIGHT_ALT = 0x86;
42const uint8_t KEY_RIGHT_GUI = 0x87;
43// Function keys
44const uint8_t KEY_F1 = 0xC2;
45const uint8_t KEY_F2 = 0xC3;
46const uint8_t KEY_F3 = 0xC4;
47const uint8_t KEY_F4 = 0xC5;
48const uint8_t KEY_F5 = 0xC6;
49const uint8_t KEY_F6 = 0xC7;
50const uint8_t KEY_F7 = 0xC8;
51const uint8_t KEY_F8 = 0xC9;
52const uint8_t KEY_F9 = 0xCA;
53const uint8_t KEY_F10 = 0xCB;
54const uint8_t KEY_F11 = 0xCC;
55const uint8_t KEY_F12 = 0xCD;
56const uint8_t KEY_F13 = 0xF0;
57const uint8_t KEY_F14 = 0xF1;
58const uint8_t KEY_F15 = 0xF2;
59const uint8_t KEY_F16 = 0xF3;
60const uint8_t KEY_F17 = 0xF4;
61const uint8_t KEY_F18 = 0xF5;
62const uint8_t KEY_F19 = 0xF6;
63const uint8_t KEY_F20 = 0xF7;
64const uint8_t KEY_F21 = 0xF8;
65const uint8_t KEY_F22 = 0xF9;
66const uint8_t KEY_F23 = 0xFA;
67const uint8_t KEY_F24 = 0xFB;
68// Numpad
69const uint8_t KEY_NUM_0 = 0xEA;
70const uint8_t KEY_NUM_1 = 0xE1;
71const uint8_t KEY_NUM_2 = 0xE2;
72const uint8_t KEY_NUM_3 = 0xE3;
73const uint8_t KEY_NUM_4 = 0xE4;
74const uint8_t KEY_NUM_5 = 0xE5;
75const uint8_t KEY_NUM_6 = 0xE6;
76const uint8_t KEY_NUM_7 = 0xE7;
77const uint8_t KEY_NUM_8 = 0xE8;
78const uint8_t KEY_NUM_9 = 0xE9;
79const uint8_t KEY_NUM_SLASH = 0xDC;
80const uint8_t KEY_NUM_ASTERISK = 0xDD;
81const uint8_t KEY_NUM_MINUS = 0xDE;
82const uint8_t KEY_NUM_PLUS = 0xDF;
83const uint8_t KEY_NUM_ENTER = 0xE0;
84const uint8_t KEY_NUM_PERIOD = 0xEB;
85// Media key reports
86static constexpr uint8_t KEY_MEDIA_NEXT_TRACK[2] = {1, 0};
87static constexpr uint8_t KEY_MEDIA_PREVIOUS_TRACK[2] = {2, 0};
88static constexpr uint8_t KEY_MEDIA_STOP[2] = {4, 0};
89static constexpr uint8_t KEY_MEDIA_PLAY_PAUSE[2] = {8, 0};
90static constexpr uint8_t KEY_MEDIA_MUTE[2] = {16, 0};
91static constexpr uint8_t KEY_MEDIA_VOLUME_UP[2] = {32, 0};
92static constexpr uint8_t KEY_MEDIA_VOLUME_DOWN[2] = {64, 0};
93// Extended media keys
94static constexpr uint8_t KEY_MEDIA_WWW_HOME[2] = {128, 0};
95static constexpr uint8_t KEY_MEDIA_LOCAL_MACHINE_BROWSER[2] = {0, 1};
96static constexpr uint8_t KEY_MEDIA_CALCULATOR[2] = {0, 2};
97static constexpr uint8_t KEY_MEDIA_WWW_BOOKMARKS[2] = {0, 4};
98static constexpr uint8_t KEY_MEDIA_WWW_SEARCH[2] = {0, 8};
99static constexpr uint8_t KEY_MEDIA_WWW_STOP[2] = {0, 16};
100static constexpr uint8_t KEY_MEDIA_WWW_BACK[2] = {0, 32};
101static constexpr uint8_t KEY_MEDIA_CONSUMER_CONTROL_CONFIGURATION[2] = {0, 64};
102static constexpr uint8_t KEY_MEDIA_EMAIL_READER[2] = {0, 128};
103#endif
104
113{
114public:
115 virtual ~IBleKeyboard() = default;
116
122 virtual void begin() = 0;
123
129 virtual bool isConnected() = 0;
130
136 virtual void write(uint8_t key) = 0;
137
143 virtual void write(const MediaKeyReport key) = 0;
144
150 virtual void print(const char* text) = 0;
151};
Interface for Bluetooth LE keyboard functionality.
virtual void write(const MediaKeyReport key)=0
Sends a media key report.
virtual bool isConnected()=0
Checks if BLE keyboard is connected to a host.
virtual void begin()=0
Initializes the BLE keyboard.
virtual void write(uint8_t key)=0
Sends a single key press.
virtual ~IBleKeyboard()=default
virtual void print(const char *text)=0
Sends a text string.
const uint8_t KEY_F12
const uint8_t KEY_F6
const uint8_t KEY_F17
const uint8_t KEY_F19
const uint8_t KEY_LEFT_GUI
const uint8_t KEY_RIGHT_SHIFT
const uint8_t KEY_LEFT_ARROW
const uint8_t KEY_NUM_2
const uint8_t KEY_NUM_PLUS
const uint8_t KEY_F15
const uint8_t KEY_F22
const uint8_t KEY_NUM_ENTER
const uint8_t KEY_RIGHT_CTRL
const uint8_t KEY_F8
const uint8_t KEY_NUM_7
const uint8_t KEY_RIGHT_ARROW
const uint8_t KEY_F18
const uint8_t KEY_RIGHT_ALT
const uint8_t KEY_F13
const uint8_t KEY_NUM_1
const uint8_t KEY_DOWN_ARROW
const uint8_t KEY_F3
const uint8_t KEY_NUM_6
const uint8_t KEY_INSERT
const uint8_t KEY_END
const uint8_t KEY_F23
const uint8_t KEY_NUM_PERIOD
const uint8_t KEY_F24
const uint8_t KEY_HOME
const uint8_t KEY_UP_ARROW
const uint8_t KEY_NUM_9
const uint8_t KEY_PAGE_DOWN
const uint8_t KEY_NUM_5
const uint8_t KEY_NUM_SLASH
const uint8_t KEY_F20
const uint8_t KEY_F9
const uint8_t KEY_F14
const uint8_t KEY_CAPS_LOCK
const uint8_t KEY_LEFT_ALT
const uint8_t KEY_ESC
const uint8_t KEY_F7
const uint8_t KEY_LEFT_CTRL
const uint8_t KEY_TAB
const uint8_t KEY_F2
const uint8_t KEY_RETURN
const uint8_t KEY_F10
const uint8_t KEY_NUM_ASTERISK
const uint8_t KEY_NUM_4
const uint8_t KEY_NUM_8
const uint8_t KEY_NUM_0
const uint8_t KEY_PRTSC
uint8_t[2] MediaKeyReport
Type alias for media key reports.
const uint8_t KEY_F5
const uint8_t KEY_RIGHT_GUI
const uint8_t KEY_DELETE
const uint8_t KEY_LEFT_SHIFT
const uint8_t KEY_PAGE_UP
const uint8_t KEY_F16
const uint8_t KEY_NUM_MINUS
const uint8_t KEY_F1
const uint8_t KEY_F4
const uint8_t KEY_BACKSPACE
const uint8_t KEY_NUM_3
const uint8_t KEY_F11
const uint8_t KEY_F21