Как отправить ключи, отличные от ASCII, через соединение BLE HID с помощью Adafruit nRF52 Feather?

ble feather nrf52

Скетч примера <code>hid_keyboard</code> показывает, как отправлять символы ASCII, но как я могу отправлять коды, отличные от ASCII, такие как клавиша F1 или клавиши с модификаторами shift/control?

, 👍1


1 ответ


Лучший ответ:

1

Вы можете использовать функцию keyboardReport() для отправки кодов клавиш с модификаторами. Вот пример, который отправит !, отправив код клавиши для 1 плюс модификатор клавиши Shift...

    // Функция keyboardReport() принимает массив из 6 кодов клавиш. Насколько я могу судить, это не
    // последовательно нажимайте клавиши,. он нажимает их одновременно.

    // Здесь мы хотим отправить только один код, поэтому мы заполняем массив HID_KEY_NONE

    uint8_t keycodes[6] = { HID_KEY_1, HID_KEY_NONE , HID_KEY_NONE , HID_KEY_NONE , HID_KEY_NONE , HID_KEY_NONE };
    blehid.keyboardReport( KEYBOARD_MODIFIER_LEFTSHIFT , keycodes );  

    // Этот релиз кажется обязательным. Без него последняя нажатая клавиша просто повторяется вечно.
    blehid.keyRelease();   

Здесь перечислены возможные модификаторы... https:// github.com/ adafruit/Adafruit_nRF52_Arduino/blob/200b3aaefb3256ac26df82ebc9b5b58923d9c37c/cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/hid/hid.h#L188

...и возможные коды клавиш перечислены здесь.. http s://github.com /adafruit/Adafruit_nRF52_Arduino/blob/200b3aaefb3256ac26df82ebc9b5b58923d9c37c/cores/nRF5/Adafruit_TinyUSB_Core/tinyusb/src/class/hid/hid.h#L212

К сожалению, пример hid_keycodes не компилируется, но это готовый к запуску скетч, показывающий, как отправлять коды клавиш напрямую...

https://gist.github.com/bigjosh/5d8575f26988228dcf9d40c3795d0928

,