It looks to me like ble_hid_keyboard and ble_hid_controls might be mutually-exclusive. Is it feasible to send commands in both "mechanisms" without a rewrite of those modules?
In the Adafruit Bluefruit LE services AT command API, I seem to remember it's possible to send both AT+BLEHIDCONTROLKEY and AT+BLEKEYBOARDCODE in the same "session" (so to speak). And, a typical Bluetooth keyboard with media keys can obviously do both media controls and keyboard presses simultaneously.
I want to be able to send:
ble_hid_keyboard.KEY.RIGHT on single click;
ble_hid_keyboard.KEY.LEFT on double click;
and a control key (specifically control 0xb8 of the 0x0c Consumer Page, described on pg.77 of the HID Usage Tables PDF) on triple click.
0xb8 is the "Show Keyboard / Eject" key, which should reveal the keyboard on iOS; if you connect even a one-button keyboard in iOS, it assumes you don't want the on-screen keyboard. I don't know of a way to tell iOS that it's a limited "auxiliary" keyboard, so without that, offering the Eject key is a workaround.
I assume this is part of the HID report definition -- writing a comprehensive definition encompassing both -- but it's a bit beyond me. I'm wondering if @Gordon might know how to create a unified report definition capable of both, having written the two existing HID modules.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
It looks to me like
ble_hid_keyboard
andble_hid_controls
might be mutually-exclusive. Is it feasible to send commands in both "mechanisms" without a rewrite of those modules?In the Adafruit Bluefruit LE services AT command API, I seem to remember it's possible to send both
AT+BLEHIDCONTROLKEY
andAT+BLEKEYBOARDCODE
in the same "session" (so to speak). And, a typical Bluetooth keyboard with media keys can obviously do both media controls and keyboard presses simultaneously.I want to be able to send:
ble_hid_keyboard.KEY.RIGHT
on single click;ble_hid_keyboard.KEY.LEFT
on double click;0xb8
of the0x0c
Consumer Page, described on pg.77 of the HID Usage Tables PDF) on triple click.0xb8
is the "Show Keyboard / Eject" key, which should reveal the keyboard on iOS; if you connect even a one-button keyboard in iOS, it assumes you don't want the on-screen keyboard. I don't know of a way to tell iOS that it's a limited "auxiliary" keyboard, so without that, offering the Eject key is a workaround.I assume this is part of the HID report definition -- writing a comprehensive definition encompassing both -- but it's a bit beyond me. I'm wondering if @Gordon might know how to create a unified report definition capable of both, having written the two existing HID modules.