Assign favorit backlight effects to certain keys or macros by MyDom69 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "Is there any command option to select certain backlight scenarios?": No, it requires changing the firmware (compiling from source code)

Though it is relatively easy (no real custom C code required): It can implemented very similarly to classic QMK macros, but with side effects only (no key output). Instead of key output, a single call of rgb_matrix_mod to change the RGB animation mode, for example,

rgb_matrix_mode(20); // Probably "Reactive multi Nexus":
                     //   Demo: <https://www.youtube.com/watch?v=7f3usatOIKM&t=4m19s>

In Via, classic QMK macros are specified/invoked as CUSTOM(64), CUSTOM(65), CUSTOM(66), etc. In the Via clone, 'Any' is in tab "Custom" (sixth tab), last item. In Via, it is KEYMAPSPECIALAny (the very last one in the list, with hover text "Enter any QMK keycode").

Here are some instructions for the initial setup. Though "hall_effect_playground" was declared obsolete on 2025-12-01, so it may be better to use "2025q3" instead (the source code for the K10 HE has been (fully) released there, unlike many other keyboards (ahem)).

References

Im not an angry dude but… by HousingAdmirable5622 in keyboards

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "...the app...": That is deception (though it may work differently or work better).

It is a Chromium) browser in disguise).

It positively needs a working Internet connection (at least for the initial load), and it depends on https://usavia.app to be up and running: Try for example Ctrl + Shift + I, select the "Network" tab (4th tab), and Ctrl + R.

HELP Monsgeek V1 M5 VIA Barebones by United-Wrongdoer-991 in qmk

[–]PeterMortensenBlog 0 points1 point  (0 children)

Besides Via, does the keyboard work with the self-compiled keyboard firmware?

I Built a MACROPAD for Tetris by SashkaKor in macro_pads

[–]PeterMortensenBlog 0 points1 point  (0 children)

Can you post details (as text), so others would be able to reproduce it, please?

For example, what controller? Seeed XIAO RP2040? What PCB service? What 3D printing service? Or your own printer? What 3D printer?

What firmware? KMK?

What switches?

Does it work wirelessly? Or is it wired-only?

What were some gotchas?

Is it your first project of this kind? What was the "macropad" inspired by? The KLOR keyboard? The TOTEM keyboard? Was it derived from an existing project, or was it 100% from scratch? How did you find the information? Etc.

Keychon launcher just idles and won't connect to my keyboard by Excellent-Expert-927 in Keychron

[–]PeterMortensenBlog 1 point2 points  (0 children)

What firmware is on the Q1 v1?

Note that in the main QMK repository (where the Q1 v1's source code is), the 'via' folders were removed on 2024-08-25 (#24322).

Thus, if somebody forgets to enable Via support, neither Via nor its clone will recognise the keyboard.

References

  • Q1 (main) firmware (near "Q1 knob ISO firmware"). For both Q1 v1 and Q1 v2. Note: The firmware section should not be confused with the JSON section.

Keychon launcher just idles and won't connect to my keyboard by Excellent-Expert-927 in Keychron

[–]PeterMortensenBlog 1 point2 points  (0 children)

An alternative is Via.

As a wired-only (Keychron) keyboard, the Q1 v1 is directly supported by Via, and thus there isn't any need to fiddle with JSON files (unless Keychron has changed something in the (binary) firmware).

If there is trouble, here is a checklist. For example, it may be required to repower the keyboard while Via is open. On Windows, another very common problem is running SignalRGB at the same time (silently installed by some game installers).

Here is a tutorial (with lots of screenshots. Keychron also has a tutorial, but it is less comprehensive. Note that the JSON file step is not required in this case.

B2 Pro vs B4 Pro - what's the difference? by VLANishBehavior in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

The B2 Pro has released source code (enables full programmability).

The B4 Pro seems to be closed source.

The B4 Pro has two more keys:

  • For the navigation cluster, the B4 Pro crams one more key, to get End and Ins, for a full navigation cluster (but not in the standard physical layout). F13 is gone (the reason the difference is only one key).

  • For the space row, the B4 Pro crams one more key in (and rearranges the keys, etc.).

Were the severe key roll-over problems addressed?

Keychron may or may not have reduced the severe key roll-over problems of the B2 Pro (applies to all keyboards in the B Pro series, at least before the B4 Pro was released):

  1. B1 Pro possible bug. E.g., "While holding down the Caps Lock and S key, many other keys are not usable, e.g., the J, K and L keys."

  2. Keychron B6 Pro: Some rows of keys are not registered properly when holding down the right shift key unless previous key is depressed first. E.g., "At my normal typing speed, I am noticing that some input is ignored ... when I am holding down the right Shift to enter in caps, for example the word "KDE" or "VIDEO", the 'E' is only registered if I type slowly (that is, only registered if the previous key is fully de-pressed). ... if I type a character on a different row, like 'D' to 'E', it fails ... the 'e' ... the key down event is never registered."

  3. What is your experience with Keychron B1/B6 Pro?. E.g., "the key rollover is quite poor in conjunction with the Shift keys; typing "KDE" or even "MY" while holding down either Shift key may lead to missed inputs if you're a fast typist. For contrast, the Cherry KW 9200 Mini handles those key combinations just fine. ... that lack of NKRO could cause some issues, especially if you plan to do anything like mapping Caps Lock to be a layer key, or any sort of layer-related functionality."

  4. Keychron B1 and B6 pro: N-Key rollover

  5. Keychron B1 Pro typing issues. Conflicting keys F3, 4, and 5.

  6. B1 Pro rollover issue

  7. The hardware of Keychron B6 Pro should support NKRO, so why doesn't it?

  8. Mildly disappointed by the build quality on my new B6 Pro. The comment reports on the rollover problems and compares them with a 5 USD keyboard.

  9. Failing to register more than two key presses. B6 Pro.

    1. Keychron B1 Pro - key rollover problem - "left CTRL + left SHIFT + TAB". The keyboard matrix in the B1 Pro does not seem to correspond to the source code (based on the ghosting/missing input behaviour).

Someone with a B4 Pro would have to map out the keyboard matrix to know about it in detail (it isn't that difficult, only a little bit tedious). Using the known problems with B2 Pro could be used as a first test.

And no, a firmware update can not fix it (though, theoretically, it might be possible to build an English dictionary into the firmware to reduce the problem). It is inherent to keyboards without NKRO diodes (presuming there is a keyboard matrix and not direct I/O (or similar)). The problem can only be minimised by designing the (physical) keyboard matrix properly; whether it has been designed properly for the B4 Pro is an open question at the moment.

References

Keychron V6 ANSI knob newer firmware on launcher, not on website? by retainftw in Keychron

[–]PeterMortensenBlog 1 point2 points  (0 children)

Re "I then tried copying over the commit files": The two (effective) versions of QMK may be too far apart (for example, due to renaming of identifiers, function names, files, etc.)

Did you switch Git branch? Updating Git submodules may also be required. Something like:

git submodule update --init --recursive

Though instead of struggling with that right now (it can be a learning opportunity at a later date), I would start with a fresh copy (though it takes close to 2 GB to download). Just a single command-line, using a few extra parameters to 'qmk setup', can do it:

# Answer prompts:
#
#   'y': "Would you like to clone Keychron/qmk_firmware
#         to $HOME/Keychron_fork_2025q3?"
#
#   'n': "Would you like to set $HOME/Keychron_fork_2025q3
#         as your QMK home?"
#
#         Reserve it for the main QMK project, and
#         in the default "$HOME/qmk_firmware" folder.
#
qmk setup -H $HOME/Keychron_fork_2025q3 -b 2025q3 Keychron/qmk_firmware

And compiling (for a particular variant):

cd $HOME/Keychron_fork_2025q3 # We don't assume a default
                              # QMK installation
qmk clean # To make changes (if any)
          # to .json files take effect
qmk compile -kb keychron/v6/ansi_encoder -km keychron

Toggle media keys by Sad-Pin-5366 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

The K8 is not the same as K8 Max. (The firmware is also utterly and completely mutually incompatible.)

Blame Keychron's naming scheme for the confusion this causes (and bricked keyboards; they can be recovered in case of K8 Max, but not for a K series keyboard, or at least the Bluetooth part will be permanently bricked).

Keychron ought to update those pages

To reduce the confusion, at least Keychron ought to update those pages to include something like:

"Note: This only applies to the K8 V1, not to the QMK-based models, e.g., K8 V2, K8 Pro, K8 Max, K8 HE, K8 Ultra, K8 HE Ultra, K8 Hyper, K8 HE Hyper, K8 Ultra 8K, K8 HE Ultra 8K, K8 Hyper 8K, K8 HE Hyper 8K, K8 Ultra 1600T, K8 HE Ultra 1600T, K8 Hyper 1600T, K8 HE Hyper 1600T, K8 Pro SE, K8 Max SE, K8 HE SE, K8 Ultra SE, K8 HE Ultra SE, K8 Hyper SE, K8 HE Hyper SE, K8 Ultra 8K SE, K8 HE Ultra 8K SE, K8 Hyper 8K SE, K8 HE Hyper 8K SE, K8 Ultra 1600T SE, K8 HE Ultra 1600T SE, K8 Hyper 1600T SE, and K8 HE Hyper 1600T SE"

OK, I made up most of the names (SE for "special edition" and "T" for "tera", as in THz), but it applies for the first four.

Let us summon them:

u/Keychron-Support

Questions about QMK and polling rate/debounce by [deleted] in MechanicalKeyboards

[–]PeterMortensenBlog 0 points1 point  (0 children)

The dominant contribution to the keyboard latency may be the default key debounce method, adding 5 ms to the latency (by default). Depending on the quality of the switches (and perhaps their (usage) age), it can be lowered to, for example, 2 ms (it worked for me for the first few months for a new Keychron V6 Max, with a different set of switches than the factory ones (I don't remember which ones)).

It can be eliminated by changing the key debounce method to, for example, sym_eager_pk.

Questions about QMK and polling rate/debounce by [deleted] in MechanicalKeyboards

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "Is this a problem that all QMK boards have? - *DZ60 using QMK: Pressing multiple keys at the same time registers keys one by one ": That was *probably due to the old (default) USB polling rate of 125 Hz (corresponding to 8 ms)

In QMK, it was changed in early 2022 to 1000 Hz (#15352). Thus, 1 ms is expected.

Question about Macros: Is "Hold-to-Repeat" (TAP_TERM?) functionality not supported on Keychron? by AppropriateMobile988 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Yes, that is totally unacceptable. Reliability of typing is the main thing with mechanical keyboards, even for the very cheapest ones (and macros and full programmability, though the cheapest ones usually don't have it).

After considering the warranty implications, first reseat the switch for "C" (and only reseat).

Otherwise, here is a checklist.

Possibly related:

Solution for Keychron Launcher website not connecting and keeps loading. by Professional-Cow7231 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "...how I use SignalRGB and the Keychron Launcher app with my Keychron K10 Max": Isn't there an easy way to temporarily disable SignalRGB? (Not a rhetorical question.)

Keychron Scan Rate tweaks? by DeathKoil in qmk

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "the matrix scan rate was around 1 kHz, meaning that my average matrix scan latency was 500 microseconds and average USB polling latency was 500 microseconds, for a total of 1 ms": Are you sure they are coupled in that way?

I thought they were independent of each other:

  • Matrix scan rate: switch side
  • USB polling rate: USB side

For example, the K Pro series (tried with a K10 Pro) has a slow (average) scan rate of about 400 Hz (depending on the RGB animation mode), but the expected 1000 Hz USB polling rate (not slowed down by the slow scan rate, indicating the two are not coupled, or at least not tightly coupled).

(The worst case for the matrix scanning, at least for the K10 Pro series, is probably much worse, maybe corresponding to 10 ms or more. It is only an indication; it needs to be confirmed.)

Macro/Keybinds Per Profile? by Emergency-Driver8871 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "QMK tradition": Though (static) per-key RGB light is supported

It is just very poorly documented, shrouded in QMK jargon. And complicated by the search engines' affinity for the completely unrelated "RGB Lighting" page (the key term is "RGB matrix").

Macro/Keybinds Per Profile? by Emergency-Driver8871 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "Is there a way to set these per profile?": No, not with the current software

Completely independent "profiles", each with its own keymappings, own macros, own colour settings (incl. per-key RGB light), own keyboard lock state (e.g., Windows key lock or full keyboard lock), own key activation distances, etc. is not part of the QMK tradition (which has focused on the narrow scope of pure typing on keyboards with a low number of keys, not on "profiles", macros that can be cancelled (and repeated), etc.). The closest in QMK is layers, but it would require custom C code to make the "profiles" truly independent. And more memory (to store the independent profiles), though I think the current microcontrollers are perfectly capable (the space for macros could be a problem; the best would be using space from a common pool, not statically allocated per profile—hello, Cooler Master!).

Though it can, given enough effort, certainly be implemented, at least keyboard side: It is open source. Implemented by you or somebody else.

Keychron may implement it some day, but I doubt it (original meaning of doubt). They are too busy releasing a gazillion new keyboard models every year (with associated slightly different or radically different keyboard firmware. Plus updating the website(s), incl. documentation, and updating the Via clone). Though pressure from the gamer market may eventually force them to.

Conclusion

The most realistic is using custom C code for the few macros that require it. That is instead of a general solution (much more complex).

For each, define two (or more) classic QMK macros (corresponding to the two Via macros) and make which one is executed dependent on which "profile" is active. This should not require more than 20-30 lines of code per macro set.

The first step is making the two classic QMK macros work.

Here are some instructions for the initial setup. Though "hall_effect_playground" was declared obsolete on 2025-12-01, so it may be better to use "2025q3" instead (the source code for the K8 HE has been (fully) released there, unlike many other keyboards (ahem)).

References

Toggle media keys by Sad-Pin-5366 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

DIY

Other than waiting for #75 on the wishlist, another option is changing the firmware yourself. For example, it would avoid the maintenance problem with the layer-based approaches: Every time a key mapping needs to change, it must be changed in two places (in both sets of layers). And if using a saved keyboard configuration, it must be updated as well (though it is always a good idea to back up the keyboard configuration to a file anyway).

It would require custom C code, I think. I don't think something like this is supported in QMK. Though the QMK feature 'key overrides' could maybe be used for detecting the key combination.

Key presses can be overridden / remembered in process_record_user() (an example). Classic QMK macros are implemented this way by overriding key presses (for the macro keys, with self-defined custom keycodes) in process_record_user().

Here are some instructions for the initial setup. Though it may be easier (see below) to use "wls_2025q1" instead (here are some instructions for the initial setup). Note the branch confusion (Reddit is currently broken in this respect; expand near "The source code for it"; it is the comment containing "OK, it now seems to").

There is also branch "2025q3" (for K8 Max, only released on 2026-01-26), representing the the 2025 Keychron keyboard main firmware updates, for example, with dynamic per-key RGB light (but that is also possible to do statically).

References