adafruit / adafruit/Adafruit_nRF52_Arduino
Support of Fn key
- Dominant language
- C
- Stars
- 699
- Forks
- 570
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
Although the "Fn" key doesn't strictly have a regular key code - it appears you can send it if the BLE device has a specific vendor and product id. Also BLEHidAdafruit would need to use a reserved byte in the report or put additional descriptors.
**Describe the solution you'd like**
We can send the Fn key so we can emulate a Apple vendor keyboard. Note this is useful because if you were to use a Adafruit BLE board for assistive tech - the Fn key is the default key for a number of "full keyboard access". Its a bit of a pain to remap.
**Describe alternatives you've considered**
Using QMK. They have done it. https://github.com/qmk/qmk_firmware/issues/2179
**Additional context**
It appears you have to change the vendor ID to an apple keyboard to make this work. https://gist.github.com/fauxpark/010dcf5d6377c3a71ac98ce37414c6c4?permalink_comment_id=3720511#gistcomment-3720511
See also: https://github.com/qmk/qmk_firmware/issues/2179 which explains it nicely and https://unix.stackexchange.com/questions/41537/linux-apple-wireless-a1314-fn-key-not-registered-looks-like-software-bug
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing BLEHidAdafruit and the HID report or descriptor handling, then compare the referenced QMK issue and Apple keyboard behavior. Done means an Adafruit BLE board can transmit the Fn key and be recognized as an Apple vendor keyboard without breaking existing keyboard reports.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100