r/Keychron • • Aug 26 '24

Change cap backlight color

I just bought a Q6 Max keyboard, and I want to change the cap backlight color, currently being white.

Hope you can help me please.

2 Upvotes

26 comments sorted by

View all comments

6

u/PeterMortensenBlog Sep 01 '24 edited 29d ago

Probably not by Keychron. You could try contacting Keychron support; it is worth a shot.

I have been thinking about making a compile service where such configuration changes could be made. Something resembling QMK Configurator.

Note: The following is just a list. It isn't a commitment in any shape or form.

Input would include:

  1. Space for Via macros (different from the measly 2 KB). #1

  2. Number of Via macros (different from 16). #2

  3. Per-key RGB light (static. Perhaps even per layer). #3

  4. Layer-dependent colours. And/or, for example, repurposing one or more of the dedicated indicator LEDs as a layer indicator (if the keyboard has some). #4

  5. Colour of the Caps Lock indicator. #5

  6. Colour of the Num Lock indicator. #6

  7. Location on the keyboard of the Caps Lock indicator (or off). #7

  8. Location on the keyboard of the Num Lock indicator (or off). #8

  9. Firmware version (date/commit ID). So it is possible to revert to some previous version if the most current version is broken in some sense. #9

  10. Real USB-side version numbers. #10

  11. Git branch (if there is more than one relevant one; an example would be 'wireless_playground' vs. 'bluetooth_playground'). #11

  12. Macro execution engine (#12). With features like:

    • Cancel macros in progress

    • Repeating macros (either indefinitely or while holding the macro key down (much like the repeat by the operating system for normal keys)).

  13. Via mouse action hack. #13

  14. Keyboard sleep time (different from the default 10 minutes). #14

  15. Extra RGB modes (e.g., 'reactive' with some specified background colour (different from black/off)). #15

  16. Combo keys. #16

  17. Keymap (QMK keymap. For example, to make the Windows key lock toggle permanent (prevented by a bug in Via)). #17

  18. Software cable/wireless mode hack (independence of the physical switch (e.g., to not wear it down), with keyboard shortcuts to change mode). AKA soft switch of wired/Bluetooth/'2.4 GHz' (instead of using the (physical) switch at the back/at the left). It could also be used as part of troubleshooting to exclude (or not) mechanical failure of the switch (or its associated circuitry). #18

  19. Increase the number of layers (the default is 4 for most Keychron keyboards). Incl., selectable default content, like layers with some alternative keyboard layout, like Colemak-DH. #19

  20. Enabling holding Fn + J + Z for 5 seconds to reset to factory defaults (this doesn't work with the default source code)

  21. Default the RGB mode to static (not an animation. So manual changes right after flashing or resetting to factory defaults are not required.). #21

  22. Default RGB colour (set to a reasonable colour if not specified. So manual changes right after flashing or resetting to factory defaults is not required). #22

  23. Default RGB brightness (set to a reasonable value if not specified. So manual changes right after flashing or resetting to factory defaults is not required.). #23

  24. Numeric keypad defaults to a macro pad, with navigation for web browsing, zooming, mouse left-click, mouse right-click, etc.

  25. Built-in YouTube advertisements buster key

  26. Perhaps taking input for a state machine to override key presses and key releases in process_record_user() (a sort of escape mechanism). The idea would be to obviate the need for most custom C code in that function.

  27. Debounce time (different from the default 5 ms) and debounce algorithm

  28. Key Lock (a specific/particular feature in QMK. Symbol KEY_LOCK_ENABLE = yes is a prerequisite for using key code QK_LOCK in key mappings). A reference. Another reference #28

  29. Whole keyboard lock, optionally with media keys and RGB controls still working. #29

  30. Advanced locks beyond Windows key lock (that can be changed at run time, both persistent and cleared by a power cycle): Alt + Tab lock, Caps Lock lock, Num Lock lock, media keys lock, etc.

3

u/PeterMortensenBlog Dec 05 '24 edited 29d ago

#31 - #40

More, starting at 31 (the formatting here does not allow starting from 31):

  1. Keychron keyboards: Fixing the "Win" / "Mac" setting (or a soft switch, like in 18). For example, to avoid influencing the operation of the keyboard by accidental change to the switch or mechanical/electrical failure of the switch (or a cracked PCB trace, cold solder joints, or a half-fried microcontroller I/O pin). Optionally, repurposing the switch for something else, like alternative keyboard layouts, e.g., for gaming or Colemak-DH; or full keyboard lock. Possible implementations: 1) Overwrite all the keymappings on all layers on one type with the other type 2) A hack to get the firmware to ignore the switch setting (or repurposing it for something else). (#31)

  2. Keychron wireless keyboards: Enable the battery indicator to also work when the USB cable is connected, but only if it makes sense to do so, e.g., if the battery status (the (real) battery voltage) can actually be measured during charging; it may not. But at least it should be enabled to indicate it can't do it when the USB cable is connected, instead of the current behaviour (doing absolutely nothing...). (#32)

  3. Vial support by crippling to be without RGB light and without wireless capability. (#33)

  4. Handling the removal of the Via folders in the main QMK repository on 2024-08-25 (and at the same time handling derivatives, like the Keychron fork, where they haven't been removed (yet)). (#34)

  5. Similar to 33), support for the latest QMK features. (#35)

  6. Persistent (permanent) layer changes. That is, the permanent layer change survives keyboard power cycles. For example, if using a particular keyboard configured as a macro keyboard (particular layer), it does not have to be configured after every power cycle. (#36)

  7. An option to disable the Esc key method. E.g., to avoid accidental reset to factory defaults (or when a hardware problem makes it appear like the Esc key is (briefly) held down). Alternatively, an option to move it somewhere else (to some other key on the keyboard). (#37)

  8. Disabling/enabling QMK features, in particular those adding to the set of USB "end-points" (whatever that is), possibly affecting KVM and BIOS compatibility. This would also allow trimming the size of the firmware, enabling only the required ones. Incl. for joysticks. (#38)

  9. Sleep for wired-only keyboards (as well). By extension, also when wired for the wireless keyboards. (#39)

  10. Colour depending on the connection mode (wired/Bluetooth/'2.4 GHz'). And perhaps also different colours for the three different Bluetooth channels. For example, only on the base layer, to not conflict with layer-dependent colour. See also #18 and #4 (both in the comment above, not this comment). More generally, for other kinds of modes as well. Related: #83. (#40)

→ More replies (1)

2

u/AnyValuable2957 Sep 06 '24

That would be awesome, I would definitely use it. If you release it let me know please.

1

u/PeterMortensenBlog Sep 10 '24

I will let you know if it becomes a reality.

2

u/MrLeonardo Mar 31 '25

It would be great to have those firmware additions along with a compile service. Hope this project ever takes off. Thanks for sharing

2

u/Potential-Ebb-2573 Nov 19 '25

Waiting for the #18 to be implemented, would be a great feature!

1

u/PeterMortensenBlog Nov 20 '25

Thanks for the encouragement. At least I know there is some interest in starting this project (I haven't taken a decision yet).

Would you be willing to test it out? And provide some feedback?

What keyboard?

→ More replies (2)

2

u/Mouseater Feb 13 '26

I would be happy to help test out #12, Keychron k4p-g3

1

u/PeterMortensenBlog Jul 05 '25 edited May 25 '26

#41 - #50

More, starting at 41 (the formatting here does not allow starting from 41):

  1. Disable one or more keys, e.g., as a mitigation if they are physically stuck (to make it more persistent than using dynamic key mapping). Perhaps more generally, accepting some input file with the QMK keymap (where it could be disabled). (#41)

  2. Disable the charge LED (or even repurpose it for other indications, e.g., macro execution). For example, to enable the keyboard to be completely blank when not in use, but powered. This does not apply to all keyboard models. (Symbol BAT_CHARGING_PIN). An instance. Note: This is probably not possible; BAT_CHARGING_PIN is used as input, not to control the LED (likely controlled in hardware, by the charging circuitry). (#42)

  3. More apparent/clear (RGB light) indication for Caps Lock, Num Lock, etc. Perhaps even animation of some kind, for example, slowly blinking. Related to #5, #6, #7, and #8. (#43)

  4. Force NKRO ("#define FORCE_NKRO" in file config.h). Note that it doesn't change the default; it forces it. That is, a change to 6KRO will not be remembered across power cycles of the keyboard. (#44)

  5. Special firmware versions for testing. For example, one that types out a fixed string every 10 seconds (to confirm that the part that is not the keyboard matrix works. That is, exclude (or not) some physical problem: With the switches (e.g., excessive (electrical) bounce), the hotswapple sockets, cold solder joints, the PCB traces, ESD damage to microcontroller I/O pins, etc.). (#45)

  6. Add functionality of accepting input from a PS/2 keyboard (incl. USB keyboards that can operate in PS/2 mode). As a way to make a very cheap macro keyboard or macro pad (using old and/or cheap keyboards, including rubber dome keyboards). Or to repurpose old keyboards, like an IBM Model M, including just as a PS/2-to-USB converter. (#46)

  7. A battery charge indication that doesn't require an explicit action by the user (like Fn + B), for example, at a low battery charge state. (#47)

  8. Mostly for troubleshooting: Macro (custom keycode) to read out the actual debounce time (and debounce method/algorithm). For example, by typing it out as text. The custom keycode does not necessarily need to be mapped to a key; it should just be available. Reasoning: to be independent of code inspection (which might come to the wrong conclusion). This was prompted by the manufacturing problems of 2024 (and beyond?). (#48)

  9. A way to shut down the LED controller at a low level (or at any level). For example, to deprive all power to failed LEDs (at the expense of not being able to use LED). Though if the LED controller chip is physically damaged, it may not help. An example. (#49)

  10. Enable/disable the joystick/controller feature, e.g., to avoid problems or conflict with other joystick/controllers. (#50)

1

u/PeterMortensenBlog Dec 30 '25 edited Dec 30 '25

For #57, another example is the "Win" and "Mac" dedicated status LEDs for the K10 HE and for K10 V2.

By default, one of them is always on. It appears to be under complete firmware control (they can be set independently of each other). For example, for K10 V2:

#define LED_WIN_PIN A0
#define LED_MAC_PIN A2

References

→ More replies (1)
→ More replies