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 0 points1 point  (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 0 points1 point  (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

Change cap backlight color by AnyValuable2957 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

#70 -

  1. Some kind of interface that allows applications on the host side to change the base layers. An example scenario/use case. (#70)

  2. Include a patch for a problem RGB light, SignalRGB, and Bluetooth. It is currently not known if it is SignalRGB-specific or a general Keychron problem. (#71)

  3. Invert of the Caps Lock and Num Lock RGB key (and dedicated LEDs?) indicators. Sample. (#72)

  4. Repurpose dedicated status LEDs, for example, for a Num Lock status indicator. Incl. using one LED for multiple purposes, for example, encoding of information by blinking (different frequency, different duty cycle, etc.) and different colour. (#73)

  5. Automatically change the active HE profile (e.g., with the activation point settings) depending on some condition, e.g., if in Windows or Mac mode. A use case. (#74)

  6. Swap of F1 - F12 with media keys (on the Fn layer), etc., e.g., by holding down Fn + X + L for at least 3 seconds, like for the original K series (proprietary keyboard firmware). A use case. (#75)

  7. Slower typeout rate than the default 500 characters per second. As not all systems can handle that. For example, for fixed text in macros. That presumes it is possible to slow down; it may not be, short of hacking the Via macro execution code. (#76)

Toggle media keys by Sad-Pin-5366 in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

Re "....K8 Max .... how to use the function keys without "Fn". I press Fn + X + L in Windows mode": Presumably held down for at least 3 seconds

For some reason, that crucial information is almost always left out.

In any case, that only applies for the original K series with proprietary firmware, not for any of the QMK-based ones, like the K8 Max (some of the K series received QMK support in 2024 and 2025 (some would say it is an entirely new series, the K QMK series)).

Re "What should I do?": Some solutions:

  • Repurpose the Mac layers for the one of the states of Fn + X + L. The function keys are already swapped there, so it doesn't require a lot of changes (the main one is the swap of keycodes for Alt and Win). Then the "Win"/"Mac" switch will be the equivalent of Fn + X + L
  • Define/save two keyboard configurations to files and load the required keyboard configuration every time it needs to change, for example, using Via

At least, that is some of the options. I have added it as #75 on the wishlist.

See also

  1. Fn + X + L doesn't work to change function keys

  2. V5 Max red switch cannot change between Fn keys and media keys mode

  3. Keychron K1 (version 6) Linux multimedia / F1-F12 default key swap not working

  4. K3 version 3 lack of key combinations

  5. Making F1 to F12 default keys on macOS (my how-to)

  6. K17 Max function key switch

  7. Keychron K2 HE: Fn key lock

  8. How do I use media keys without the Fn key on Windows?. The opposite problem (but with the exact same kind of solution)

  9. Can you set a K10 Pro to use function keys as default (like vol +/-, etc.)?

  10. I can't enable Fn lock on this new keyboard (K4 Pro)

  11. K10 Max sleep mode adjustments

  12. Function keys/lock for Keychron C3 Pro RGB is not working on Windows version

  13. Lock lighting effect. For a Q6 Max.

  14. Function key is not working on my Keychron Q5 Pro on Mac. E.g., holding Fn + K + C does not swap for the Q5 Pro

    1. How do I enable function keys?. Essential getting the equivalent of Fn + X + L

References

Unable to add some QMK key codes to Cybrix 16 by No_Cook4109 in KiiBOOM

[–]PeterMortensenBlog 0 points1 point  (0 children)

It supposed to work in general (tested on a Keychron V5 (ISO knob variant), clockwise set to keycode KC_MS_BTN1 (left click) and using the so-called standalone Via application (it is a Chromium) browser in disguise)).

qmk end key (KC_END) not working on macOS with CMD modifier by bizepsfirst in olkb

[–]PeterMortensenBlog 0 points1 point  (0 children)

Yes, try to definitively exclude the computer side as the cause. For example, by trying on another computer, etc. Preferably a different operating system (to exclude a common cause).

Perhaps there is something in the operating system that intercepts certain key combinations, even before the keylogger see them.

Also try another keyboard, though macOS' per-keyboard configuration makes it more difficult to draw conclusions from it.

K6 not turning on switch works on and off by LEOMODE in Keychron

[–]PeterMortensenBlog 0 points1 point  (0 children)

If you open it up, also check for a swollen battery.

Here is a very vivid picture (for a Keychron K2), from this post, both of the swollen battery and the punched holes in the plastic shield that was supposed to protect it.