Repository navigation
[Bug] 2.4GHz Mode - Function Keys stuck in Multimedia Mode on MacOS and Linux #43
Description
Describe the Bug
The function keys seem to be stuck in multimedia mode, where F1 is brightness down, F2 is brightness up, F3 is launchpad, etc. Pressing FN + desired function key still sends these multimedia keys. This issue occurs on both my MacOS and Linux system.
- The issue does not occur in Wired nor Bluetooth mode.
- I have tried remapping the function keys to completely different keys using via but these keys still perform the multimedia functions regardless. I tried remapping with both the battery switch ON and OFF.
- Reflashing the 2.0.0 firmware did not fix the issue.
- Swapping between Windows/Mac mode on the keyboard did not make a difference.
- On my Windows system, the keyboard works as intended in 2.4GHz mode.
My Linux system is running Fedora 44 (7.1.3-200.fc44.x86_6). Not sure if this is useful, but after a refresh reflash and everything default, evtest logs this. (/dev/input/event4 seems to capture all normal keypresses like the letters, numbers, Shift, Enter, etc. Cycling through F1-F12 without the Fn key logs an event here):
user@linux-desktop:~$ sudo evtest
[sudo] password for user:
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event4: Bridge75 2.4G
/dev/input/event6: Bridge75 2.4G
/dev/input/event7: Bridge75 2.4G
Select the device event number [0-26]: 4
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x5ac product 0x24f version 0x100
Input device name: "Bridge75 2.4G"
Supported events:
...
Properties:
Testing ... (interrupt to exit)
Event: time 1784077693.059582, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1784077693.059582, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1784077693.059582, -------------- SYN_REPORT ------------
Event: time 1784077699.028739, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1784077699.028739, type 1 (EV_KEY), code 30 (KEY_A), value 1
Event: time 1784077699.028739, -------------- SYN_REPORT ------------
aEvent: time 1784077699.123735, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70004
Event: time 1784077699.123735, type 1 (EV_KEY), code 30 (KEY_A), value 0
Event: time 1784077699.123735, -------------- SYN_REPORT ------------
Event: time 1784077700.518781, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003a
Event: time 1784077700.518781, type 1 (EV_KEY), code 224 (KEY_BRIGHTNESSDOWN), value 1
Event: time 1784077700.518781, -------------- SYN_REPORT ------------
Event: time 1784077700.610777, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003a
Event: time 1784077700.610777, type 1 (EV_KEY), code 224 (KEY_BRIGHTNESSDOWN), value 0
Event: time 1784077700.610777, -------------- SYN_REPORT ------------
Event: time 1784077700.819779, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003b
Event: time 1784077700.819779, type 1 (EV_KEY), code 225 (KEY_BRIGHTNESSUP), value 1
Event: time 1784077700.819779, -------------- SYN_REPORT ------------
Event: time 1784077700.949781, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003b
Event: time 1784077700.949781, type 1 (EV_KEY), code 225 (KEY_BRIGHTNESSUP), value 0
Event: time 1784077700.949781, -------------- SYN_REPORT ------------
Event: time 1784077701.487794, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003c
Event: time 1784077701.487794, type 1 (EV_KEY), code 120 (KEY_SCALE), value 1
Event: time 1784077701.487794, -------------- SYN_REPORT ------------
Event: time 1784077701.620798, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003c
Event: time 1784077701.620798, type 1 (EV_KEY), code 120 (KEY_SCALE), value 0
Event: time 1784077701.620798, -------------- SYN_REPORT ------------
Event: time 1784077701.754797, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003d
Event: time 1784077701.754797, type 1 (EV_KEY), code 204 (KEY_DASHBOARD), value 1
Event: time 1784077701.754797, -------------- SYN_REPORT ------------
Event: time 1784077701.856802, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003d
Event: time 1784077701.856802, type 1 (EV_KEY), code 204 (KEY_DASHBOARD), value 0
Event: time 1784077701.856802, -------------- SYN_REPORT ------------
Event: time 1784077702.104810, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003e
Event: time 1784077702.104810, type 1 (EV_KEY), code 229 (KEY_KBDILLUMDOWN), value 1
Event: time 1784077702.104810, -------------- SYN_REPORT ------------
Event: time 1784077702.204808, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003e
Event: time 1784077702.204808, type 1 (EV_KEY), code 229 (KEY_KBDILLUMDOWN), value 0
Event: time 1784077702.204808, -------------- SYN_REPORT ------------
Event: time 1784077702.392817, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003f
Event: time 1784077702.392817, type 1 (EV_KEY), code 230 (KEY_KBDILLUMUP), value 1
Event: time 1784077702.392817, -------------- SYN_REPORT ------------
Event: time 1784077702.503821, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7003f
Event: time 1784077702.503821, type 1 (EV_KEY), code 230 (KEY_KBDILLUMUP), value 0
Event: time 1784077702.503821, -------------- SYN_REPORT ------------
Event: time 1784077702.698833, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70040
Event: time 1784077702.698833, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 1
Event: time 1784077702.698833, -------------- SYN_REPORT ------------
Event: time 1784077702.808828, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70040
Event: time 1784077702.808828, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 0
Event: time 1784077702.808828, -------------- SYN_REPORT ------------
Event: time 1784077703.003834, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70041
Event: time 1784077703.003834, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1784077703.003834, -------------- SYN_REPORT ------------
Event: time 1784077703.084837, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70041
Event: time 1784077703.084837, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1784077703.084837, -------------- SYN_REPORT ------------
Event: time 1784077703.336842, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70042
Event: time 1784077703.336842, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1
Event: time 1784077703.336842, -------------- SYN_REPORT ------------
Event: time 1784077703.441850, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70042
Event: time 1784077703.441850, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 0
Event: time 1784077703.441850, -------------- SYN_REPORT ------------
Event: time 1784077703.678849, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70043
Event: time 1784077703.678849, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1784077703.678849, -------------- SYN_REPORT ------------
Event: time 1784077703.775854, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70043
Event: time 1784077703.775854, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1784077703.775854, -------------- SYN_REPORT ------------
Event: time 1784077704.046859, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70044
Event: time 1784077704.046859, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1784077704.046859, -------------- SYN_REPORT ------------
Event: time 1784077704.175862, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70044
Event: time 1784077704.175862, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1784077704.175862, -------------- SYN_REPORT ------------
Event: time 1784077704.352865, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70045
Event: time 1784077704.352865, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1784077704.352865, -------------- SYN_REPORT ------------
Event: time 1784077704.466871, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70045
Event: time 1784077704.466871, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1784077704.466871, -------------- SYN_REPORT ------------
evtest on /dev/input/event7 logs events when I press Fn + Function key. Fn + F4 reports "KEY_UNKNOWN" as seen below. Fn + F5 & Fn + F6 actually instead registers events on /dev/input/event4 but respectively send KEY_KBDILLUMDOWN and KEY_KBDILLUMUP.
Select the device event number [0-26]: 7
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x5ac product 0x24f version 0x100
Input device name: "Bridge75 2.4G"
...
Testing ... (interrupt to exit)
Event: time 1784077987.261926, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0070
Event: time 1784077987.261926, type 1 (EV_KEY), code 224 (KEY_BRIGHTNESSDOWN), value 1
Event: time 1784077987.261926, -------------- SYN_REPORT ------------
Event: time 1784077987.348920, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0070
Event: time 1784077987.348920, type 1 (EV_KEY), code 224 (KEY_BRIGHTNESSDOWN), value 0
Event: time 1784077987.348920, -------------- SYN_REPORT ------------
Event: time 1784077988.559959, type 4 (EV_MSC), code 4 (MSC_SCAN), value c006f
Event: time 1784077988.559959, type 1 (EV_KEY), code 225 (KEY_BRIGHTNESSUP), value 1
Event: time 1784077988.559959, -------------- SYN_REPORT ------------
Event: time 1784077988.680958, type 4 (EV_MSC), code 4 (MSC_SCAN), value c006f
Event: time 1784077988.680958, type 1 (EV_KEY), code 225 (KEY_BRIGHTNESSUP), value 0
Event: time 1784077988.680958, -------------- SYN_REPORT ------------
Event: time 1784077989.267969, type 4 (EV_MSC), code 4 (MSC_SCAN), value c029f
Event: time 1784077989.267969, type 1 (EV_KEY), code 120 (KEY_SCALE), value 1
Event: time 1784077989.267969, -------------- SYN_REPORT ------------
Event: time 1784077989.363970, type 4 (EV_MSC), code 4 (MSC_SCAN), value c029f
Event: time 1784077989.363970, type 1 (EV_KEY), code 120 (KEY_SCALE), value 0
Event: time 1784077989.363970, -------------- SYN_REPORT ------------
Event: time 1784077989.539974, type 4 (EV_MSC), code 4 (MSC_SCAN), value c02a0
Event: time 1784077989.539974, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
Event: time 1784077989.539974, -------------- SYN_REPORT ------------
Event: time 1784077989.618977, type 4 (EV_MSC), code 4 (MSC_SCAN), value c02a0
Event: time 1784077989.618977, type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 0
Event: time 1784077989.618977, -------------- SYN_REPORT ------------
Event: time 1784077990.387990, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b6
Event: time 1784077990.387990, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 1
Event: time 1784077990.387990, -------------- SYN_REPORT ------------
Event: time 1784077990.474997, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b6
Event: time 1784077990.474997, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 0
Event: time 1784077990.474997, -------------- SYN_REPORT ------------
Event: time 1784077990.659004, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1784077990.659004, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1784077990.659004, -------------- SYN_REPORT ------------
Event: time 1784077990.757007, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1784077990.757007, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1784077990.757007, -------------- SYN_REPORT ------------
Event: time 1784077991.298030, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1784077991.298030, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1
Event: time 1784077991.298030, -------------- SYN_REPORT ------------
Event: time 1784077991.386020, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1784077991.386020, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 0
Event: time 1784077991.386020, -------------- SYN_REPORT ------------
Event: time 1784077991.565025, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1784077991.565025, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1784077991.565025, -------------- SYN_REPORT ------------
Event: time 1784077991.648027, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1784077991.648027, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1784077991.648027, -------------- SYN_REPORT ------------
Event: time 1784077993.100065, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1784077993.100065, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1784077993.100065, -------------- SYN_REPORT ------------
Event: time 1784077993.203066, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1784077993.203066, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1784077993.203066, -------------- SYN_REPORT ------------
Event: time 1784077993.367071, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1784077993.367071, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1784077993.367071, -------------- SYN_REPORT ------------
Event: time 1784077993.444074, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1784077993.444074, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1784077993.444074, -------------- SYN_REPORT ------------
Keyboard Used
Bridge75 Plus ANSI
Link to product page (if applicable)
No response
Operating System
No response
qmk doctor Output
Is AutoHotKey / Karabiner installed
- AutoHotKey (Windows)
- Karabiner (macOS)
Other keyboard-related software installed
No response
Additional Context
No response
Activity
grantfanian commentedon Aug 16, 2026
The root cause is that the wireless controller (CH582F) and 2.4 GHz dongle hardcode Apple vendor ID
0x05ACand product ID0x024Facross both 2.4 GHz wireless and Bluetooth LE modes like this.Because the device advertises
05ac:024f:hid-applekernel driver to both USB (0003:05AC:024F, the 2.4 GHz receiver) and Bluetooth (0005:05AC:024F, bus IDs and device numbers vary per system). By default,hid-applesetsfnmode=1, which intercepts standard F1 to F12 scan codes (0x7003ato0x70045) in kernel space and translates them into media events (KEY_BRIGHTNESSDOWN,KEY_VOLUMEUP, etc.). Changing assignments in VIA has no effect becausehid-appletranslates whatever F-key code arrives at the kernel level.05ac:024fas an official Apple keyboard, binding the top row to system controls unless overridden in system settings.Workaround
Linux: Set
fnmode=2onhid_appleso F1 to F12 default to standard function keys without requiring the Fn key:If
hid_appleis included in your initramfs, rebuild it to persist across reboots (sudo dracut -fon Fedora orsudo update-initramfs -uon Debian/Ubuntu).Note: This setting applies globally to all devices managed by
hid_apple. If you also use a genuine Apple keyboard on the same system, you can isolate settings per device or physical port using custom udev rules or sysfs attributes.macOS: Open System Settings > Keyboard > Keyboard Shortcuts > Function Keys and enable "Use F1, F2, etc. keys as standard function keys".
Potential permanent fix (through proprietary firmware)
In wired USB mode, the board enumerates with its configured VID/PID (
22E1:F00D).For wireless modes:
0xAD(md_send_vpid()) configuration packet containingVENDOR_IDandPRODUCT_IDover UART during pairing. However, the payload is either not forwarded over RF by the CH582F wireless slave or ignored/unpersisted by the USB receiver firmware, leaving the receiver's USB Device Descriptor fixed to05AC:024F. Updating the wireless firmware stack to handle and persist0xAD(or defaulting the receiver to the board's native VID/PID) will resolve this in 2.4 GHz mode.0xA9to configure the device name string; it has no command to set the BLE PnP ID (GATT characteristic0x2A50). Changing the BLE Vendor/Product ID requires updating the CH582F binary image to change its default GATT DIS records.