adafruit / adafruit/Adafruit_nRF52_Arduino

Support of Fn key

Open
#748 0 comments 0 reactions 0 assignees View on GitHub
Feature
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.