From 3446af734c744a4defeededf1cb17a614bb47b91 Mon Sep 17 00:00:00 2001 From: LilyGO <31160602+LilyGO@users.noreply.github.com> Date: Sat, 18 Jun 2022 17:07:28 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9AFixed=20the=20repairing=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 - ....0.0.bin => T-keyboard__factory_1.0.0.bin} | Bin 806912 -> 807264 bytes lib/ESP32-BLE-Keyboard-0.3.0/BleKeyboard.cpp | 507 ---------------- lib/ESP32-BLE-Keyboard-master/BleKeyboard.cpp | 555 ++++++++++++++++++ .../BleKeyboard.h | 33 ++ .../README.md | 20 +- .../SendKeyStrokes/SendKeyStrokes.ino | 5 + .../keywords.txt | 0 .../library.properties | 2 +- 9 files changed, 607 insertions(+), 517 deletions(-) rename frimware/{T-keyboard_factory_1.0.0.bin => T-keyboard__factory_1.0.0.bin} (58%) delete mode 100644 lib/ESP32-BLE-Keyboard-0.3.0/BleKeyboard.cpp create mode 100644 lib/ESP32-BLE-Keyboard-master/BleKeyboard.cpp rename lib/{ESP32-BLE-Keyboard-0.3.0 => ESP32-BLE-Keyboard-master}/BleKeyboard.h (82%) rename lib/{ESP32-BLE-Keyboard-0.3.0 => ESP32-BLE-Keyboard-master}/README.md (93%) rename lib/{ESP32-BLE-Keyboard-0.3.0 => ESP32-BLE-Keyboard-master}/examples/SendKeyStrokes/SendKeyStrokes.ino (88%) rename lib/{ESP32-BLE-Keyboard-0.3.0 => ESP32-BLE-Keyboard-master}/keywords.txt (100%) rename lib/{ESP32-BLE-Keyboard-0.3.0 => ESP32-BLE-Keyboard-master}/library.properties (94%) diff --git a/README.md b/README.md index fcd57cf..d8d1780 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,6 @@ - [ESP32-BLE-Keyboard](https://github.com/T-vK/ESP32-BLE-Keyboard/tree/0.3.0) - [T-0.99TFT](https://github.com/Xinyuan-LilyGO/T-0.99TFT) - - **USE PlatformIO** 1. Install[VSCODE](https://code.visualstudio.com/)and[Python](https://www.python.org/) diff --git a/frimware/T-keyboard_factory_1.0.0.bin b/frimware/T-keyboard__factory_1.0.0.bin similarity index 58% rename from frimware/T-keyboard_factory_1.0.0.bin rename to frimware/T-keyboard__factory_1.0.0.bin index f15452fcd3e92f90bcbc4633f5cb2379dd293af3..be1e3a07e249a018c9068804ebfcb93b3e33618b 100644 GIT binary patch delta 120602 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¨S-#j5zymvFb@IL94;^`l~f1 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 -#include -#include -#include -#else -#include -#include -#include -#include "BLE2902.h" -#include "BLEHIDDevice.h" -#endif // USE_NIMBLE -#include "HIDTypes.h" -#include -#include "sdkconfig.h" - -#include "BleKeyboard.h" - -#if defined(CONFIG_ARDUHAL_ESP_LOG) - #include "esp32-hal-log.h" - #define LOG_TAG "" -#else - #include "esp_log.h" - static const char* LOG_TAG = "BLEDevice"; -#endif - - -// Report IDs: -#define KEYBOARD_ID 0x01 -#define MEDIA_KEYS_ID 0x02 - -static const uint8_t _hidReportDescriptor[] = { - USAGE_PAGE(1), 0x01, // USAGE_PAGE (Generic Desktop Ctrls) - USAGE(1), 0x06, // USAGE (Keyboard) - COLLECTION(1), 0x01, // COLLECTION (Application) - // ------------------------------------------------- Keyboard - REPORT_ID(1), KEYBOARD_ID, // REPORT_ID (1) - USAGE_PAGE(1), 0x07, // USAGE_PAGE (Kbrd/Keypad) - USAGE_MINIMUM(1), 0xE0, // USAGE_MINIMUM (0xE0) - USAGE_MAXIMUM(1), 0xE7, // USAGE_MAXIMUM (0xE7) - LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM (0) - LOGICAL_MAXIMUM(1), 0x01, // Logical Maximum (1) - REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) - REPORT_COUNT(1), 0x08, // REPORT_COUNT (8) - HIDINPUT(1), 0x02, // INPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) - REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) ; 1 byte (Reserved) - REPORT_SIZE(1), 0x08, // REPORT_SIZE (8) - HIDINPUT(1), 0x01, // INPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) - REPORT_COUNT(1), 0x05, // REPORT_COUNT (5) ; 5 bits (Num lock, Caps lock, Scroll lock, Compose, Kana) - REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) - USAGE_PAGE(1), 0x08, // USAGE_PAGE (LEDs) - USAGE_MINIMUM(1), 0x01, // USAGE_MINIMUM (0x01) ; Num Lock - USAGE_MAXIMUM(1), 0x05, // USAGE_MAXIMUM (0x05) ; Kana - HIDOUTPUT(1), 0x02, // OUTPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) - REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) ; 3 bits (Padding) - REPORT_SIZE(1), 0x03, // REPORT_SIZE (3) - HIDOUTPUT(1), 0x01, // OUTPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) - REPORT_COUNT(1), 0x06, // REPORT_COUNT (6) ; 6 bytes (Keys) - REPORT_SIZE(1), 0x08, // REPORT_SIZE(8) - LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM(0) - LOGICAL_MAXIMUM(1), 0x65, // LOGICAL_MAXIMUM(0x65) ; 101 keys - USAGE_PAGE(1), 0x07, // USAGE_PAGE (Kbrd/Keypad) - USAGE_MINIMUM(1), 0x00, // USAGE_MINIMUM (0) - USAGE_MAXIMUM(1), 0x65, // USAGE_MAXIMUM (0x65) - HIDINPUT(1), 0x00, // INPUT (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) - END_COLLECTION(0), // END_COLLECTION - // ------------------------------------------------- Media Keys - USAGE_PAGE(1), 0x0C, // USAGE_PAGE (Consumer) - USAGE(1), 0x01, // USAGE (Consumer Control) - COLLECTION(1), 0x01, // COLLECTION (Application) - REPORT_ID(1), MEDIA_KEYS_ID, // REPORT_ID (3) - USAGE_PAGE(1), 0x0C, // USAGE_PAGE (Consumer) - LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM (0) - LOGICAL_MAXIMUM(1), 0x01, // LOGICAL_MAXIMUM (1) - REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) - REPORT_COUNT(1), 0x10, // REPORT_COUNT (16) - USAGE(1), 0xB5, // USAGE (Scan Next Track) ; bit 0: 1 - USAGE(1), 0xB6, // USAGE (Scan Previous Track) ; bit 1: 2 - USAGE(1), 0xB7, // USAGE (Stop) ; bit 2: 4 - USAGE(1), 0xCD, // USAGE (Play/Pause) ; bit 3: 8 - USAGE(1), 0xE2, // USAGE (Mute) ; bit 4: 16 - USAGE(1), 0xE9, // USAGE (Volume Increment) ; bit 5: 32 - USAGE(1), 0xEA, // USAGE (Volume Decrement) ; bit 6: 64 - USAGE(2), 0x23, 0x02, // Usage (WWW Home) ; bit 7: 128 - USAGE(2), 0x94, 0x01, // Usage (My Computer) ; bit 0: 1 - USAGE(2), 0x92, 0x01, // Usage (Calculator) ; bit 1: 2 - USAGE(2), 0x2A, 0x02, // Usage (WWW fav) ; bit 2: 4 - USAGE(2), 0x21, 0x02, // Usage (WWW search) ; bit 3: 8 - USAGE(2), 0x26, 0x02, // Usage (WWW stop) ; bit 4: 16 - USAGE(2), 0x24, 0x02, // Usage (WWW back) ; bit 5: 32 - USAGE(2), 0x83, 0x01, // Usage (Media sel) ; bit 6: 64 - USAGE(2), 0x8A, 0x01, // Usage (Mail) ; bit 7: 128 - HIDINPUT(1), 0x02, // INPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) - END_COLLECTION(0) // END_COLLECTION -}; - -BleKeyboard::BleKeyboard(std::string deviceName, std::string deviceManufacturer, uint8_t batteryLevel) - : hid(0) - , deviceName(std::string(deviceName).substr(0, 15)) - , deviceManufacturer(std::string(deviceManufacturer).substr(0,15)) - , batteryLevel(batteryLevel) {} - -void BleKeyboard::begin(void) -{ - BLEDevice::init(deviceName); - BLEServer* pServer = BLEDevice::createServer(); - pServer->setCallbacks(this); - - hid = new BLEHIDDevice(pServer); - inputKeyboard = hid->inputReport(KEYBOARD_ID); // <-- input REPORTID from report map - outputKeyboard = hid->outputReport(KEYBOARD_ID); - inputMediaKeys = hid->inputReport(MEDIA_KEYS_ID); - - outputKeyboard->setCallbacks(this); - - hid->manufacturer()->setValue(deviceManufacturer); - - hid->pnp(0x02, 0xe502, 0xa111, 0x0210); - hid->hidInfo(0x00, 0x01); - - BLESecurity* pSecurity = new BLESecurity(); - - pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND); - - hid->reportMap((uint8_t*)_hidReportDescriptor, sizeof(_hidReportDescriptor)); - hid->startServices(); - - onStarted(pServer); - - advertising = pServer->getAdvertising(); - advertising->setAppearance(HID_KEYBOARD); - advertising->addServiceUUID(hid->hidService()->getUUID()); - advertising->setScanResponse(false); - advertising->start(); - hid->setBatteryLevel(batteryLevel); - - ESP_LOGD(LOG_TAG, "Advertising started!"); -} - -void BleKeyboard::end(void) -{ -} - -bool BleKeyboard::isConnected(void) { - return this->connected; -} - -void BleKeyboard::setBatteryLevel(uint8_t level) { - this->batteryLevel = level; - if (hid != 0) - this->hid->setBatteryLevel(this->batteryLevel); -} - -//must be called before begin in order to set the name -void BleKeyboard::setName(std::string deviceName) { - this->deviceName = deviceName; -} - -/** - * @brief Sets the waiting time (in milliseconds) between multiple keystrokes in NimBLE mode. - * - * @param ms Time in milliseconds - */ -void BleKeyboard::setDelay(uint32_t ms) { - this->_delay_ms = ms; -} - -void BleKeyboard::sendReport(KeyReport* keys) -{ - if (this->isConnected()) - { - this->inputKeyboard->setValue((uint8_t*)keys, sizeof(KeyReport)); - this->inputKeyboard->notify(); -#if defined(USE_NIMBLE) - // vTaskDelay(delayTicks); - this->delay_ms(_delay_ms); -#endif // USE_NIMBLE - } -} - -void BleKeyboard::sendReport(MediaKeyReport* keys) -{ - if (this->isConnected()) - { - this->inputMediaKeys->setValue((uint8_t*)keys, sizeof(MediaKeyReport)); - this->inputMediaKeys->notify(); -#if defined(USE_NIMBLE) - //vTaskDelay(delayTicks); - this->delay_ms(_delay_ms); -#endif // USE_NIMBLE - } -} - -extern -const uint8_t _asciimap[128] PROGMEM; - -#define SHIFT 0x80 -const uint8_t _asciimap[128] = -{ - 0x00, // NUL - 0x00, // SOH - 0x00, // STX - 0x00, // ETX - 0x00, // EOT - 0x00, // ENQ - 0x00, // ACK - 0x00, // BEL - 0x2a, // BS Backspace - 0x2b, // TAB Tab - 0x28, // LF Enter - 0x00, // VT - 0x00, // FF - 0x00, // CR - 0x00, // SO - 0x00, // SI - 0x00, // DEL - 0x00, // DC1 - 0x00, // DC2 - 0x00, // DC3 - 0x00, // DC4 - 0x00, // NAK - 0x00, // SYN - 0x00, // ETB - 0x00, // CAN - 0x00, // EM - 0x00, // SUB - 0x00, // ESC - 0x00, // FS - 0x00, // GS - 0x00, // RS - 0x00, // US - - 0x2c, // ' ' - 0x1e|SHIFT, // ! - 0x34|SHIFT, // " - 0x20|SHIFT, // # - 0x21|SHIFT, // $ - 0x22|SHIFT, // % - 0x24|SHIFT, // & - 0x34, // ' - 0x26|SHIFT, // ( - 0x27|SHIFT, // ) - 0x25|SHIFT, // * - 0x2e|SHIFT, // + - 0x36, // , - 0x2d, // - - 0x37, // . - 0x38, // / - 0x27, // 0 - 0x1e, // 1 - 0x1f, // 2 - 0x20, // 3 - 0x21, // 4 - 0x22, // 5 - 0x23, // 6 - 0x24, // 7 - 0x25, // 8 - 0x26, // 9 - 0x33|SHIFT, // : - 0x33, // ; - 0x36|SHIFT, // < - 0x2e, // = - 0x37|SHIFT, // > - 0x38|SHIFT, // ? - 0x1f|SHIFT, // @ - 0x04|SHIFT, // A - 0x05|SHIFT, // B - 0x06|SHIFT, // C - 0x07|SHIFT, // D - 0x08|SHIFT, // E - 0x09|SHIFT, // F - 0x0a|SHIFT, // G - 0x0b|SHIFT, // H - 0x0c|SHIFT, // I - 0x0d|SHIFT, // J - 0x0e|SHIFT, // K - 0x0f|SHIFT, // L - 0x10|SHIFT, // M - 0x11|SHIFT, // N - 0x12|SHIFT, // O - 0x13|SHIFT, // P - 0x14|SHIFT, // Q - 0x15|SHIFT, // R - 0x16|SHIFT, // S - 0x17|SHIFT, // T - 0x18|SHIFT, // U - 0x19|SHIFT, // V - 0x1a|SHIFT, // W - 0x1b|SHIFT, // X - 0x1c|SHIFT, // Y - 0x1d|SHIFT, // Z - 0x2f, // [ - 0x31, // bslash - 0x30, // ] - 0x23|SHIFT, // ^ - 0x2d|SHIFT, // _ - 0x35, // ` - 0x04, // a - 0x05, // b - 0x06, // c - 0x07, // d - 0x08, // e - 0x09, // f - 0x0a, // g - 0x0b, // h - 0x0c, // i - 0x0d, // j - 0x0e, // k - 0x0f, // l - 0x10, // m - 0x11, // n - 0x12, // o - 0x13, // p - 0x14, // q - 0x15, // r - 0x16, // s - 0x17, // t - 0x18, // u - 0x19, // v - 0x1a, // w - 0x1b, // x - 0x1c, // y - 0x1d, // z - 0x2f|SHIFT, // { - 0x31|SHIFT, // | - 0x30|SHIFT, // } - 0x35|SHIFT, // ~ - 0 // DEL -}; - - -uint8_t USBPutChar(uint8_t c); - -// press() adds the specified key (printing, non-printing, or modifier) -// to the persistent key report and sends the report. Because of the way -// USB HID works, the host acts like the key remains pressed until we -// call release(), releaseAll(), or otherwise clear the report and resend. -size_t BleKeyboard::press(uint8_t k) -{ - uint8_t i; - if (k >= 136) { // it's a non-printing key (not a modifier) - k = k - 136; - } else if (k >= 128) { // it's a modifier key - _keyReport.modifiers |= (1<<(k-128)); - k = 0; - } else { // it's a printing key - k = pgm_read_byte(_asciimap + k); - if (!k) { - setWriteError(); - return 0; - } - if (k & 0x80) { // it's a capital letter or other character reached with shift - _keyReport.modifiers |= 0x02; // the left shift modifier - k &= 0x7F; - } - } - - // Add k to the key report only if it's not already present - // and if there is an empty slot. - if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && - _keyReport.keys[2] != k && _keyReport.keys[3] != k && - _keyReport.keys[4] != k && _keyReport.keys[5] != k) { - - for (i=0; i<6; i++) { - if (_keyReport.keys[i] == 0x00) { - _keyReport.keys[i] = k; - break; - } - } - if (i == 6) { - setWriteError(); - return 0; - } - } - sendReport(&_keyReport); - return 1; -} - -size_t BleKeyboard::press(const MediaKeyReport k) -{ - uint16_t k_16 = k[1] | (k[0] << 8); - uint16_t mediaKeyReport_16 = _mediaKeyReport[1] | (_mediaKeyReport[0] << 8); - - mediaKeyReport_16 |= k_16; - _mediaKeyReport[0] = (uint8_t)((mediaKeyReport_16 & 0xFF00) >> 8); - _mediaKeyReport[1] = (uint8_t)(mediaKeyReport_16 & 0x00FF); - - sendReport(&_mediaKeyReport); - return 1; -} - -// release() takes the specified key out of the persistent key report and -// sends the report. This tells the OS the key is no longer pressed and that -// it shouldn't be repeated any more. -size_t BleKeyboard::release(uint8_t k) -{ - uint8_t i; - if (k >= 136) { // it's a non-printing key (not a modifier) - k = k - 136; - } else if (k >= 128) { // it's a modifier key - _keyReport.modifiers &= ~(1<<(k-128)); - k = 0; - } else { // it's a printing key - k = pgm_read_byte(_asciimap + k); - if (!k) { - return 0; - } - if (k & 0x80) { // it's a capital letter or other character reached with shift - _keyReport.modifiers &= ~(0x02); // the left shift modifier - k &= 0x7F; - } - } - - // Test the key report to see if k is present. Clear it if it exists. - // Check all positions in case the key is present more than once (which it shouldn't be) - for (i=0; i<6; i++) { - if (0 != k && _keyReport.keys[i] == k) { - _keyReport.keys[i] = 0x00; - } - } - - sendReport(&_keyReport); - return 1; -} - -size_t BleKeyboard::release(const MediaKeyReport k) -{ - uint16_t k_16 = k[1] | (k[0] << 8); - uint16_t mediaKeyReport_16 = _mediaKeyReport[1] | (_mediaKeyReport[0] << 8); - mediaKeyReport_16 &= ~k_16; - _mediaKeyReport[0] = (uint8_t)((mediaKeyReport_16 & 0xFF00) >> 8); - _mediaKeyReport[1] = (uint8_t)(mediaKeyReport_16 & 0x00FF); - - sendReport(&_mediaKeyReport); - return 1; -} - -void BleKeyboard::releaseAll(void) -{ - _keyReport.keys[0] = 0; - _keyReport.keys[1] = 0; - _keyReport.keys[2] = 0; - _keyReport.keys[3] = 0; - _keyReport.keys[4] = 0; - _keyReport.keys[5] = 0; - _keyReport.modifiers = 0; - _mediaKeyReport[0] = 0; - _mediaKeyReport[1] = 0; - sendReport(&_keyReport); -} - -size_t BleKeyboard::write(uint8_t c) -{ - uint8_t p = press(c); // Keydown - release(c); // Keyup - return p; // just return the result of press() since release() almost always returns 1 -} - -size_t BleKeyboard::write(const MediaKeyReport c) -{ - uint16_t p = press(c); // Keydown - release(c); // Keyup - return p; // just return the result of press() since release() almost always returns 1 -} - -size_t BleKeyboard::write(const uint8_t *buffer, size_t size) { - size_t n = 0; - while (size--) { - if (*buffer != '\r') { - if (write(*buffer)) { - n++; - } else { - break; - } - } - buffer++; - } - return n; -} - -void BleKeyboard::onConnect(BLEServer* pServer) { - this->connected = true; -} - -void BleKeyboard::onDisconnect(BLEServer* pServer) { - this->connected = false; -#if !defined(USE_NIMBLE) - advertising->start(); -#endif // !USE_NIMBLE -} - -void BleKeyboard::onWrite(BLECharacteristic* me) { - uint8_t* value = (uint8_t*)(me->getValue().c_str()); - (void)value; - ESP_LOGI(LOG_TAG, "special keys: %d", *value); -} - -void BleKeyboard::delay_ms(uint64_t ms) { - uint64_t m = esp_timer_get_time(); - if(ms){ - uint64_t e = (m + (ms * 1000)); - if(m > e){ //overflow - while(esp_timer_get_time() > e) { } - } - while(esp_timer_get_time() < e) {} - } -} \ No newline at end of file diff --git a/lib/ESP32-BLE-Keyboard-master/BleKeyboard.cpp b/lib/ESP32-BLE-Keyboard-master/BleKeyboard.cpp new file mode 100644 index 0000000..30dcc70 --- /dev/null +++ b/lib/ESP32-BLE-Keyboard-master/BleKeyboard.cpp @@ -0,0 +1,555 @@ +#include "BleKeyboard.h" + +#if defined(USE_NIMBLE) +#include +#include +#include +#include +#else +#include +#include +#include +#include "BLE2902.h" +#include "BLEHIDDevice.h" +#endif // USE_NIMBLE +#include "HIDTypes.h" +#include +#include "sdkconfig.h" + + +#if defined(CONFIG_ARDUHAL_ESP_LOG) +#include "esp32-hal-log.h" +#define LOG_TAG "" +#else +#include "esp_log.h" +static const char *LOG_TAG = "BLEDevice"; +#endif + + +// Report IDs: +#define KEYBOARD_ID 0x01 +#define MEDIA_KEYS_ID 0x02 + +static const uint8_t _hidReportDescriptor[] = { + USAGE_PAGE(1), 0x01, // USAGE_PAGE (Generic Desktop Ctrls) + USAGE(1), 0x06, // USAGE (Keyboard) + COLLECTION(1), 0x01, // COLLECTION (Application) + // ------------------------------------------------- Keyboard + REPORT_ID(1), KEYBOARD_ID, // REPORT_ID (1) + USAGE_PAGE(1), 0x07, // USAGE_PAGE (Kbrd/Keypad) + USAGE_MINIMUM(1), 0xE0, // USAGE_MINIMUM (0xE0) + USAGE_MAXIMUM(1), 0xE7, // USAGE_MAXIMUM (0xE7) + LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM (0) + LOGICAL_MAXIMUM(1), 0x01, // Logical Maximum (1) + REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) + REPORT_COUNT(1), 0x08, // REPORT_COUNT (8) + HIDINPUT(1), 0x02, // INPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) + REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) ; 1 byte (Reserved) + REPORT_SIZE(1), 0x08, // REPORT_SIZE (8) + HIDINPUT(1), 0x01, // INPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) + REPORT_COUNT(1), 0x05, // REPORT_COUNT (5) ; 5 bits (Num lock, Caps lock, Scroll lock, Compose, Kana) + REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) + USAGE_PAGE(1), 0x08, // USAGE_PAGE (LEDs) + USAGE_MINIMUM(1), 0x01, // USAGE_MINIMUM (0x01) ; Num Lock + USAGE_MAXIMUM(1), 0x05, // USAGE_MAXIMUM (0x05) ; Kana + HIDOUTPUT(1), 0x02, // OUTPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) + REPORT_COUNT(1), 0x01, // REPORT_COUNT (1) ; 3 bits (Padding) + REPORT_SIZE(1), 0x03, // REPORT_SIZE (3) + HIDOUTPUT(1), 0x01, // OUTPUT (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) + REPORT_COUNT(1), 0x06, // REPORT_COUNT (6) ; 6 bytes (Keys) + REPORT_SIZE(1), 0x08, // REPORT_SIZE(8) + LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM(0) + LOGICAL_MAXIMUM(1), 0x65, // LOGICAL_MAXIMUM(0x65) ; 101 keys + USAGE_PAGE(1), 0x07, // USAGE_PAGE (Kbrd/Keypad) + USAGE_MINIMUM(1), 0x00, // USAGE_MINIMUM (0) + USAGE_MAXIMUM(1), 0x65, // USAGE_MAXIMUM (0x65) + HIDINPUT(1), 0x00, // INPUT (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) + END_COLLECTION(0), // END_COLLECTION + // ------------------------------------------------- Media Keys + USAGE_PAGE(1), 0x0C, // USAGE_PAGE (Consumer) + USAGE(1), 0x01, // USAGE (Consumer Control) + COLLECTION(1), 0x01, // COLLECTION (Application) + REPORT_ID(1), MEDIA_KEYS_ID, // REPORT_ID (3) + USAGE_PAGE(1), 0x0C, // USAGE_PAGE (Consumer) + LOGICAL_MINIMUM(1), 0x00, // LOGICAL_MINIMUM (0) + LOGICAL_MAXIMUM(1), 0x01, // LOGICAL_MAXIMUM (1) + REPORT_SIZE(1), 0x01, // REPORT_SIZE (1) + REPORT_COUNT(1), 0x10, // REPORT_COUNT (16) + USAGE(1), 0xB5, // USAGE (Scan Next Track) ; bit 0: 1 + USAGE(1), 0xB6, // USAGE (Scan Previous Track) ; bit 1: 2 + USAGE(1), 0xB7, // USAGE (Stop) ; bit 2: 4 + USAGE(1), 0xCD, // USAGE (Play/Pause) ; bit 3: 8 + USAGE(1), 0xE2, // USAGE (Mute) ; bit 4: 16 + USAGE(1), 0xE9, // USAGE (Volume Increment) ; bit 5: 32 + USAGE(1), 0xEA, // USAGE (Volume Decrement) ; bit 6: 64 + USAGE(2), 0x23, 0x02, // Usage (WWW Home) ; bit 7: 128 + USAGE(2), 0x94, 0x01, // Usage (My Computer) ; bit 0: 1 + USAGE(2), 0x92, 0x01, // Usage (Calculator) ; bit 1: 2 + USAGE(2), 0x2A, 0x02, // Usage (WWW fav) ; bit 2: 4 + USAGE(2), 0x21, 0x02, // Usage (WWW search) ; bit 3: 8 + USAGE(2), 0x26, 0x02, // Usage (WWW stop) ; bit 4: 16 + USAGE(2), 0x24, 0x02, // Usage (WWW back) ; bit 5: 32 + USAGE(2), 0x83, 0x01, // Usage (Media sel) ; bit 6: 64 + USAGE(2), 0x8A, 0x01, // Usage (Mail) ; bit 7: 128 + HIDINPUT(1), 0x02, // INPUT (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) + END_COLLECTION(0) // END_COLLECTION +}; + +BleKeyboard::BleKeyboard(std::string deviceName, std::string deviceManufacturer, uint8_t batteryLevel) + : hid(0) + , deviceName(std::string(deviceName).substr(0, 15)) + , deviceManufacturer(std::string(deviceManufacturer).substr(0, 15)) + , batteryLevel(batteryLevel) {} + +void BleKeyboard::begin(void) +{ + BLEDevice::init(deviceName); + BLEServer *pServer = BLEDevice::createServer(); + pServer->setCallbacks(this); + + hid = new BLEHIDDevice(pServer); + inputKeyboard = hid->inputReport(KEYBOARD_ID); // <-- input REPORTID from report map + outputKeyboard = hid->outputReport(KEYBOARD_ID); + inputMediaKeys = hid->inputReport(MEDIA_KEYS_ID); + + outputKeyboard->setCallbacks(this); + + hid->manufacturer()->setValue(deviceManufacturer); + + hid->pnp(0x02, 0xe502, 0xa111, 0x0210); + hid->hidInfo(0x00, 0x01); + + +#if defined(USE_NIMBLE) + + BLEDevice::setSecurityAuth(true, true, true); + +#else + + BLESecurity *pSecurity = new BLESecurity(); + pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_BOND_MITM); + +#endif // USE_NIMBLE + + hid->reportMap((uint8_t *)_hidReportDescriptor, sizeof(_hidReportDescriptor)); + hid->startServices(); + + onStarted(pServer); + + advertising = pServer->getAdvertising(); + advertising->setAppearance(HID_KEYBOARD); + advertising->addServiceUUID(hid->hidService()->getUUID()); + advertising->setScanResponse(false); + advertising->start(); + hid->setBatteryLevel(batteryLevel); + + ESP_LOGD(LOG_TAG, "Advertising started!"); +} + +void BleKeyboard::end(void) +{ +} + +bool BleKeyboard::isConnected(void) +{ + return this->connected; +} + +void BleKeyboard::setBatteryLevel(uint8_t level) +{ + this->batteryLevel = level; + if (hid != 0) + this->hid->setBatteryLevel(this->batteryLevel); +} + +//must be called before begin in order to set the name +void BleKeyboard::setName(std::string deviceName) +{ + this->deviceName = deviceName; +} + +/** + * @brief Sets the waiting time (in milliseconds) between multiple keystrokes in NimBLE mode. + * + * @param ms Time in milliseconds + */ +void BleKeyboard::setDelay(uint32_t ms) +{ + this->_delay_ms = ms; +} + +void BleKeyboard::set_vendor_id(uint16_t vid) +{ + this->vid = vid; +} + +void BleKeyboard::set_product_id(uint16_t pid) +{ + this->pid = pid; +} + +void BleKeyboard::set_version(uint16_t version) +{ + this->version = version; +} + +void BleKeyboard::sendReport(KeyReport *keys) +{ + if (this->isConnected()) { + this->inputKeyboard->setValue((uint8_t *)keys, sizeof(KeyReport)); + this->inputKeyboard->notify(); +#if defined(USE_NIMBLE) + // vTaskDelay(delayTicks); + this->delay_ms(_delay_ms); +#endif // USE_NIMBLE + } +} + +void BleKeyboard::sendReport(MediaKeyReport *keys) +{ + if (this->isConnected()) { + this->inputMediaKeys->setValue((uint8_t *)keys, sizeof(MediaKeyReport)); + this->inputMediaKeys->notify(); +#if defined(USE_NIMBLE) + //vTaskDelay(delayTicks); + this->delay_ms(_delay_ms); +#endif // USE_NIMBLE + } +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = { + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e | SHIFT, // ! + 0x34 | SHIFT, // " + 0x20 | SHIFT, // # + 0x21 | SHIFT, // $ + 0x22 | SHIFT, // % + 0x24 | SHIFT, // & + 0x34, // ' + 0x26 | SHIFT, // ( + 0x27 | SHIFT, // ) + 0x25 | SHIFT, // * + 0x2e | SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33 | SHIFT, // : + 0x33, // ; + 0x36 | SHIFT, // < + 0x2e, // = + 0x37 | SHIFT, // > + 0x38 | SHIFT, // ? + 0x1f | SHIFT, // @ + 0x04 | SHIFT, // A + 0x05 | SHIFT, // B + 0x06 | SHIFT, // C + 0x07 | SHIFT, // D + 0x08 | SHIFT, // E + 0x09 | SHIFT, // F + 0x0a | SHIFT, // G + 0x0b | SHIFT, // H + 0x0c | SHIFT, // I + 0x0d | SHIFT, // J + 0x0e | SHIFT, // K + 0x0f | SHIFT, // L + 0x10 | SHIFT, // M + 0x11 | SHIFT, // N + 0x12 | SHIFT, // O + 0x13 | SHIFT, // P + 0x14 | SHIFT, // Q + 0x15 | SHIFT, // R + 0x16 | SHIFT, // S + 0x17 | SHIFT, // T + 0x18 | SHIFT, // U + 0x19 | SHIFT, // V + 0x1a | SHIFT, // W + 0x1b | SHIFT, // X + 0x1c | SHIFT, // Y + 0x1d | SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23 | SHIFT, // ^ + 0x2d | SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f | SHIFT, // { + 0x31 | SHIFT, // | + 0x30 | SHIFT, // } + 0x35 | SHIFT, // ~ + 0 // DEL +}; + + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t BleKeyboard::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1 << (k - 128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i = 0; i < 6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +size_t BleKeyboard::press(const MediaKeyReport k) +{ + uint16_t k_16 = k[1] | (k[0] << 8); + uint16_t mediaKeyReport_16 = _mediaKeyReport[1] | (_mediaKeyReport[0] << 8); + + mediaKeyReport_16 |= k_16; + _mediaKeyReport[0] = (uint8_t)((mediaKeyReport_16 & 0xFF00) >> 8); + _mediaKeyReport[1] = (uint8_t)(mediaKeyReport_16 & 0x00FF); + + sendReport(&_mediaKeyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t BleKeyboard::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1 << (k - 128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i = 0; i < 6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +size_t BleKeyboard::release(const MediaKeyReport k) +{ + uint16_t k_16 = k[1] | (k[0] << 8); + uint16_t mediaKeyReport_16 = _mediaKeyReport[1] | (_mediaKeyReport[0] << 8); + mediaKeyReport_16 &= ~k_16; + _mediaKeyReport[0] = (uint8_t)((mediaKeyReport_16 & 0xFF00) >> 8); + _mediaKeyReport[1] = (uint8_t)(mediaKeyReport_16 & 0x00FF); + + sendReport(&_mediaKeyReport); + return 1; +} + +void BleKeyboard::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + _mediaKeyReport[0] = 0; + _mediaKeyReport[1] = 0; + sendReport(&_keyReport); +} + +size_t BleKeyboard::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 +} + +size_t BleKeyboard::write(const MediaKeyReport c) +{ + uint16_t p = press(c); // Keydown + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 +} + +size_t BleKeyboard::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + if (*buffer != '\r') { + if (write(*buffer)) { + n++; + } else { + break; + } + } + buffer++; + } + return n; +} + +void BleKeyboard::onConnect(BLEServer *pServer) +{ + this->connected = true; + +#if !defined(USE_NIMBLE) + + BLE2902 *desc = (BLE2902 *)this->inputKeyboard->getDescriptorByUUID(BLEUUID((uint16_t)0x2902)); + desc->setNotifications(true); + desc = (BLE2902 *)this->inputMediaKeys->getDescriptorByUUID(BLEUUID((uint16_t)0x2902)); + desc->setNotifications(true); + +#endif // !USE_NIMBLE + +} + +void BleKeyboard::onDisconnect(BLEServer *pServer) +{ + this->connected = false; + +#if !defined(USE_NIMBLE) + + BLE2902 *desc = (BLE2902 *)this->inputKeyboard->getDescriptorByUUID(BLEUUID((uint16_t)0x2902)); + desc->setNotifications(false); + desc = (BLE2902 *)this->inputMediaKeys->getDescriptorByUUID(BLEUUID((uint16_t)0x2902)); + desc->setNotifications(false); + + advertising->start(); + +#endif // !USE_NIMBLE +} + +void BleKeyboard::onWrite(BLECharacteristic *me) +{ + uint8_t *value = (uint8_t *)(me->getValue().c_str()); + (void)value; + ESP_LOGI(LOG_TAG, "special keys: %d", *value); +} + +void BleKeyboard::delay_ms(uint64_t ms) +{ + uint64_t m = esp_timer_get_time(); + if (ms) { + uint64_t e = (m + (ms * 1000)); + if (m > e) { //overflow + while (esp_timer_get_time() > e) { } + } + while (esp_timer_get_time() < e) {} + } +} \ No newline at end of file diff --git a/lib/ESP32-BLE-Keyboard-0.3.0/BleKeyboard.h b/lib/ESP32-BLE-Keyboard-master/BleKeyboard.h similarity index 82% rename from lib/ESP32-BLE-Keyboard-0.3.0/BleKeyboard.h rename to lib/ESP32-BLE-Keyboard-master/BleKeyboard.h index 4fdeaa5..0736a02 100644 --- a/lib/ESP32-BLE-Keyboard-0.3.0/BleKeyboard.h +++ b/lib/ESP32-BLE-Keyboard-master/BleKeyboard.h @@ -1,3 +1,6 @@ +// uncomment the following line to use NimBLE library +//#define USE_NIMBLE + #ifndef ESP32_BLE_KEYBOARD_H #define ESP32_BLE_KEYBOARD_H #include "sdkconfig.h" @@ -25,6 +28,10 @@ #include "Print.h" +#define BLE_KEYBOARD_VERSION "0.0.4" +#define BLE_KEYBOARD_VERSION_MAJOR 0 +#define BLE_KEYBOARD_VERSION_MINOR 0 +#define BLE_KEYBOARD_VERSION_REVISION 4 const uint8_t KEY_LEFT_CTRL = 0x80; const uint8_t KEY_LEFT_SHIFT = 0x81; @@ -44,6 +51,7 @@ const uint8_t KEY_TAB = 0xB3; const uint8_t KEY_RETURN = 0xB0; const uint8_t KEY_ESC = 0xB1; const uint8_t KEY_INSERT = 0xD1; +const uint8_t KEY_PRTSC = 0xCE; const uint8_t KEY_DELETE = 0xD4; const uint8_t KEY_PAGE_UP = 0xD3; const uint8_t KEY_PAGE_DOWN = 0xD6; @@ -75,6 +83,23 @@ const uint8_t KEY_F22 = 0xF9; const uint8_t KEY_F23 = 0xFA; const uint8_t KEY_F24 = 0xFB; +const uint8_t KEY_NUM_0 = 0xEA; +const uint8_t KEY_NUM_1 = 0xE1; +const uint8_t KEY_NUM_2 = 0xE2; +const uint8_t KEY_NUM_3 = 0xE3; +const uint8_t KEY_NUM_4 = 0xE4; +const uint8_t KEY_NUM_5 = 0xE5; +const uint8_t KEY_NUM_6 = 0xE6; +const uint8_t KEY_NUM_7 = 0xE7; +const uint8_t KEY_NUM_8 = 0xE8; +const uint8_t KEY_NUM_9 = 0xE9; +const uint8_t KEY_NUM_SLASH = 0xDC; +const uint8_t KEY_NUM_ASTERISK = 0xDD; +const uint8_t KEY_NUM_MINUS = 0xDE; +const uint8_t KEY_NUM_PLUS = 0xDF; +const uint8_t KEY_NUM_ENTER = 0xE0; +const uint8_t KEY_NUM_PERIOD = 0xEB; + typedef uint8_t MediaKeyReport[2]; const MediaKeyReport KEY_MEDIA_NEXT_TRACK = {1, 0}; @@ -120,6 +145,10 @@ private: uint32_t _delay_ms = 7; void delay_ms(uint64_t ms); + uint16_t vid = 0x05ac; + uint16_t pid = 0x820a; + uint16_t version = 0x0210; + public: BleKeyboard(std::string deviceName = "ESP32 Keyboard", std::string deviceManufacturer = "Espressif", uint8_t batteryLevel = 100); void begin(void); @@ -138,6 +167,10 @@ public: void setBatteryLevel(uint8_t level); void setName(std::string deviceName); void setDelay(uint32_t ms); + + void set_vendor_id(uint16_t vid); + void set_product_id(uint16_t pid); + void set_version(uint16_t version); protected: virtual void onStarted(BLEServer *pServer) { }; virtual void onConnect(BLEServer* pServer) override; diff --git a/lib/ESP32-BLE-Keyboard-0.3.0/README.md b/lib/ESP32-BLE-Keyboard-master/README.md similarity index 93% rename from lib/ESP32-BLE-Keyboard-0.3.0/README.md rename to lib/ESP32-BLE-Keyboard-master/README.md index 623a126..eac0d4e 100644 --- a/lib/ESP32-BLE-Keyboard-0.3.0/README.md +++ b/lib/ESP32-BLE-Keyboard-master/README.md @@ -58,13 +58,18 @@ void loop() { bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE); delay(1000); - - Serial.println("Sending Ctrl+Alt+Delete..."); + + // + // Below is an example of pressing multiple keyboard modifiers + // which by default is commented out. + // + /* 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..."); @@ -132,20 +137,21 @@ Flash: [==== ] 44.2% (used 579158 bytes from 1310720 bytes) | `ESP.getFreeHeap()` | 143.572 | 260.764 | **+ 117.192** | | `ESP.getSketchSize()` | 994.224 | 579.264 | **- 414.960** | -### How to activate NimBLE mode? +## How to activate NimBLE mode? -ArduinoIDE: Before including the library, insert the line `#define USE_NIMBLE` +### ArduinoIDE: +Uncomment the first line in BleKeyboard.h ```C++ #define USE_NIMBLE -#include ``` -PlatformIO: Change your `platformio.ini` to the following settings +### PlatformIO: +Change your `platformio.ini` to the following settings ```ini lib_deps = NimBLE-Arduino -build-flags = +build_flags = -D USE_NIMBLE ``` diff --git a/lib/ESP32-BLE-Keyboard-0.3.0/examples/SendKeyStrokes/SendKeyStrokes.ino b/lib/ESP32-BLE-Keyboard-master/examples/SendKeyStrokes/SendKeyStrokes.ino similarity index 88% rename from lib/ESP32-BLE-Keyboard-0.3.0/examples/SendKeyStrokes/SendKeyStrokes.ino rename to lib/ESP32-BLE-Keyboard-master/examples/SendKeyStrokes/SendKeyStrokes.ino index 0b35b00..03d1e70 100644 --- a/lib/ESP32-BLE-Keyboard-0.3.0/examples/SendKeyStrokes/SendKeyStrokes.ino +++ b/lib/ESP32-BLE-Keyboard-master/examples/SendKeyStrokes/SendKeyStrokes.ino @@ -28,12 +28,17 @@ void loop() { delay(1000); + // + // Below is an example of pressing multiple keyboard modifiers + // which by default is commented out. + /* 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..."); diff --git a/lib/ESP32-BLE-Keyboard-0.3.0/keywords.txt b/lib/ESP32-BLE-Keyboard-master/keywords.txt similarity index 100% rename from lib/ESP32-BLE-Keyboard-0.3.0/keywords.txt rename to lib/ESP32-BLE-Keyboard-master/keywords.txt diff --git a/lib/ESP32-BLE-Keyboard-0.3.0/library.properties b/lib/ESP32-BLE-Keyboard-master/library.properties similarity index 94% rename from lib/ESP32-BLE-Keyboard-0.3.0/library.properties rename to lib/ESP32-BLE-Keyboard-master/library.properties index 49e8b57..263a10f 100644 --- a/lib/ESP32-BLE-Keyboard-0.3.0/library.properties +++ b/lib/ESP32-BLE-Keyboard-master/library.properties @@ -1,5 +1,5 @@ name=ESP32 BLE Keyboard -version=0.3.0 +version=0.3.2 author=T-vK maintainer=T-vK sentence=Bluetooth LE Keyboard library for the ESP32.