HID over BLE
Pressing buttons and moving the mouse of your computer via BLE.
Allows to use the Adafruit CircuitPython HID libary with the card10.
No driver required. I expect this to work under all operating systems.
Merge request reports
Activity
added 1 commit
- fc516ae1 - fix(hid): get ready to tx again when a connetion is opened
A few hints how to interface this into Python:
https://circuitpython.readthedocs.io/projects/ble/en/latest/standard_services.html#hid
https://docs.micropython.org/en/latest/library/pyb.USB_HID.html
https://circuitpython.readthedocs.io/en/latest/shared-bindings/usb_hid/init.html#
https://learn.adafruit.com/circuitpython-essentials/circuitpython-hid-keyboard-and-mouse
https://circuitpython.readthedocs.io/projects/hid/en/latest/api.html
Some more random HID related links: https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2
https://www.hackster.io/user0448083246/esp32-ble-hid-keyboard-37a103
https://github.com/T-vK/ESP32-BLE-Keyboard/blob/master/BleKeyboard.cpp
https://stackoverflow.com/questions/21606991/custom-hid-device-hid-report-descriptor
https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
added 51 commits
-
fc516ae1...45f6d33f - 32 commits from branch
master
- 43d40861 - feat(interrupts): Function to check if an int is enabled
- eaf47ff4 - refact(ble): Move numeric comparison into our code base
- 85627336 - chore(ble): Remove unused cordio UI code
- bace0f82 - feat(ble): pairing dialog in bluetooth app
- 93f50e78 - fix(ble): Update advertising data even when it is empty
- 8458ce6e - fix(ble): Remove wrong adv timing entry
- 25626ba3 - fix(ble): Correctly switch between ADV modes
- 1c4e9678 - feat(ble): Add pretty event printing
- b2d78fea - fix(config): Fix wrong debug print
- 7e8f17f0 - feat(ble): Better bonding UI
- e86c7b6e - refact(ble): Simplify bonding storage
- 3d5789af - fix(ble): Keep advertising in slected mode after connection closes
- 0f23df0a - fix(ble): Go back to main.py after bonding
- 8b226993 - feat(ble): Only be discoverble in the BLE dialog
- 7ea488c6 - feat(ble): Appear as generic watch, add card10 UUID to advertisement
- c8458ac3 - hack(ble): implement hid profile
- c0699459 - hack(hid): Add quick pycardium support
- ef1d21bb - fix(hid): get ready to tx again when a connetion is opened
- 93d6bc25 - fix(hid): Move HID service attribute handles to 0x80
Toggle commit list-
fc516ae1...45f6d33f - 32 commits from branch
added 5 commits
Toggle commit listadded 5 commits
Toggle commit listadded 29 commits
-
19a8ee5a...de1e0902 - 24 commits from branch
master
- 3872a2de - feat(ble): Basic HID support in epicardium
- 5e17c2ae - fix(ble): Always assume the HID CCCDs are enabled
- a598de47 - feat(ble): Basic HID support for pycardium
- 9521179a - fix(hid): Move HID service attribute handles to 0x80
- 4694a4d9 - feat(hid): Make the app a bit nicer
Toggle commit list-
19a8ee5a...de1e0902 - 24 commits from branch
added 135 commits
-
4694a4d9...15cff341 - 130 commits from branch
master
- ed30c576 - feat(ble): Basic HID support in epicardium
- 2e9ffc0a - fix(ble): Always assume the HID CCCDs are enabled
- f0459443 - feat(ble): Basic HID support for pycardium
- 7da4ee4f - fix(hid): Move HID service attribute handles to 0x80
- 5dbbc584 - feat(hid): Make the app a bit nicer
Toggle commit list-
4694a4d9...15cff341 - 130 commits from branch
Some input from https://twitter.com/Pixtxa/status/1336830148050644992
added 52 commits
-
5dbbc584...88fd915e - 47 commits from branch
master
- c05b54be - feat(ble): Basic HID support in epicardium
- 3f3dfdce - fix(ble): Always assume the HID CCCDs are enabled
- 4d933ca1 - feat(ble): Basic HID support for pycardium
- 96a19bc3 - fix(hid): Move HID service attribute handles to 0x80
- 58304eca - feat(hid): Make the app a bit nicer
Toggle commit list-
5dbbc584...88fd915e - 47 commits from branch
I'll implement the epicardium API similar to the ones mentioned above:
keyCommand(modifiers, keycode1, …6)
mouseCommand(buttons, x, y, scroll_vertical, scroll_horizontal)
consumerCommand(mask)
I'll also add a proper queue to epicardium (with configurable size) so multiple commands can be queued and sent quickly.
A sys level module can then expose them on micropython level. Afterwards a more high level API can translate it to a circuit python like API: https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/master/CPB_Keybutton_BLE/cpb_keybutton_ble.py#L48
added 21 commits
-
58304eca...20234d4c - 14 commits from branch
master
- d923b261 - feat(ble): Basic HID support in epicardium
- b9311d11 - fix(ble): Always assume the HID CCCDs are enabled
- 9b256c80 - feat(ble): Basic HID support for pycardium
- a0cf6160 - fix(hid): Move HID service attribute handles to 0x80
- 1eaf85c6 - feat(hid): Make the app a bit nicer
- e75b2902 - fix(hid): Mouse movements are signed
- 10084fd8 - change(hid): Make epic interface more generic
Toggle commit list-
58304eca...20234d4c - 14 commits from branch
added 1 commit
- 847cb0bd - change(hid): Make epic interface more generic
added 1 commit
- 8b341247 - change(hid): Make epic interface more generic