Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Userspace: add support for adding environment variables during build #22887

Merged
merged 41 commits into from
Aug 12, 2024

Conversation

tzarc
Copy link
Member

@tzarc tzarc commented Jan 11, 2024

Description

A few complaints on Discord and the like for not being able to specify things like CONVERT_TO and FORCE_LAYOUT when using userspace.

This adds support for the usual -e/--env parameters to qmk userspace-add and qmk userspace-remove, and ensures such extra environment variables are propagated across to each build.

Userspace repo version is bumped to 1.1 as a result of the addition to the file format.

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout/userspace (addition or update)
  • Documentation

FIxes

Checklist

  • My code follows the code style of this project: C, Python
  • I have read the PR Checklist document and have made the appropriate changes.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have tested the changes and verified that they work and don't break anything (as well as I can manage).

@tzarc tzarc requested a review from a team January 11, 2024 10:40
@github-actions github-actions bot added python cli qmk cli command dd Data Driven Changes labels Jan 11, 2024
@bcat
Copy link
Contributor

bcat commented Jan 11, 2024

Thanks for this change! I tested it out with my userspace, and here are my findings:

  1. The userspace-add and userspace-remove changes seem to work as expected. Here's the qmk.json file I ended up with:

    {
        "userspace_version": "1.1",
        "build_targets": [
            ["9key", "bcat"],
            [
                "ai03/polaris",
                "bcat",
                [
                    ["FORCE_LAYOUT", "60_tsangan_hhkb"]
                ]
            ],
            [
                "cannonkeys/an_c",
                "bcat",
                [
                    ["FORCE_LAYOUT", "60_tsangan_hhkb"]
                ]
            ],
            [
                "cannonkeys/instant60",
                "bcat",
                [
                    ["FORCE_LAYOUT", "60_tsangan_hhkb"]
                ]
            ],
            [
                "crkbd/rev1",
                "bcat",
                [
                    ["FORCE_LAYOUT", "split_3x6_3"]
                ]
            ],
            [
                "dz60",
                "bcat",
                [
                    ["FORCE_LAYOUT", "60_ansi_split_bs_rshift"]
                ]
            ],
            [
                "dz60",
                "bcat",
                [
                    ["FORCE_LAYOUT", "60_tsangan_hhkb"]
                ]
            ],
            ["eco/rev2", "bcat"],
            [
                "kbdfans/kbd67/hotswap",
                "bcat",
                [
                    ["FORCE_LAYOUT", "65_ansi_blocker_split_bs"]
                ]
            ],
            ["keebio/bdn9/rev1", "bcat"],
            ["keebio/quefrency/rev1", "bcat"],
            ["lily58/rev1", "bcat"],
            ["yanghu/unicorne/f411", "bcat"]
        ]
    }
    
  2. The qmk userspace-compile command succeeds. However, despite running a separate build for each (keyboard, keymap, layout) combo, it doesn't seem to actually use the specified layouts:

    $ qmk userspace-compile -c
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    QMK Firmware 0.23.5
    Deleting .build/ ... done.
    Build 9key:bcat                                                        [OK]
    Build ai03/polaris:bcat                                                [OK]
    Build cannonkeys/an_c:bcat                                             [OK]
    Build cannonkeys/instant60:bcat                                        [OK]
    Build crkbd/rev1:bcat                                                  [OK]
    Build dz60:bcat                                                        [OK]
    Build dz60:bcat                                                        [OK]
    Build eco/rev2:bcat                                                    [OK]
    Build kbdfans/kbd67/hotswap:bcat                                       [OK]
    Build keebio/bdn9/rev1:bcat                                            [OK]
    Build keebio/quefrency/rev1:bcat                                       [OK]
    Build lily58/rev1:bcat                                                 [OK]
    Build yanghu/unicorne/f411:bcat                                        [OK]
    

    Notice that there's only one dz60 firmware output, not two as expected. And none of the firmware filenames have a layout suffix:

    $ ls -l *.{bin,hex}
    -rw-r--r-- 1 bcat bcat 29697 Jan 11 15:02 9key_bcat.hex
    -rw-r--r-- 1 bcat bcat 49166 Jan 11 15:00 ai03_polaris_bcat.hex
    -rwxr-xr-x 1 bcat bcat 31520 Jan 11 15:00 cannonkeys_an_c_bcat.bin
    -rwxr-xr-x 1 bcat bcat 31532 Jan 11 15:00 cannonkeys_instant60_bcat.bin
    -rw-r--r-- 1 bcat bcat 77540 Jan 11 15:00 crkbd_rev1_bcat.hex
    -rw-r--r-- 1 bcat bcat 49088 Jan 11 15:00 dz60_bcat.hex
    -rw-r--r-- 1 bcat bcat 45525 Jan 11 15:00 eco_rev2_bcat.hex
    -rw-r--r-- 1 bcat bcat 31043 Jan 11 15:00 kbdfans_kbd67_hotswap_bcat.hex
    -rw-r--r-- 1 bcat bcat 49125 Jan 11 15:00 keebio_bdn9_rev1_bcat.hex
    -rw-r--r-- 1 bcat bcat 54472 Jan 11 15:00 keebio_quefrency_rev1_bcat.hex
    -rw-r--r-- 1 bcat bcat 54967 Jan 11 15:00 lily58_rev1_bcat.hex
    -rwxr-xr-x 1 bcat bcat 78360 Jan 11 15:01 yanghu_unicorne_f411_bcat.bin
    
  3. Compare to the expected firmware file output with a separate output file per layout:

    $ ls -l *.{bin,hex}
    -rw-r--r-- 1 bcat bcat 29697 Jan 11 15:03 9key_bcat.hex
    -rw-r--r-- 1 bcat bcat 49166 Jan 11 15:03 ai03_polaris_bcat_60_tsangan_hhkb.hex
    -rwxr-xr-x 1 bcat bcat 31520 Jan 11 15:03 cannonkeys_an_c_bcat_60_tsangan_hhkb.bin
    -rwxr-xr-x 1 bcat bcat 31532 Jan 11 15:03 cannonkeys_instant60_bcat_60_tsangan_hhkb.bin
    -rw-r--r-- 1 bcat bcat 77540 Jan 11 15:03 crkbd_rev1_bcat_split_3x6_3.hex
    -rw-r--r-- 1 bcat bcat 49088 Jan 11 15:03 dz60_bcat_60_ansi_split_bs_rshift.hex
    -rw-r--r-- 1 bcat bcat 49088 Jan 11 15:03 dz60_bcat_60_tsangan_hhkb.hex
    -rw-r--r-- 1 bcat bcat 45525 Jan 11 15:03 eco_rev2_bcat.hex
    -rw-r--r-- 1 bcat bcat 31043 Jan 11 15:03 kbdfans_kbd67_hotswap_bcat_65_ansi_blocker_split_bs.hex
    -rw-r--r-- 1 bcat bcat 49125 Jan 11 15:03 keebio_bdn9_rev1_bcat.hex
    -rw-r--r-- 1 bcat bcat 54472 Jan 11 15:03 keebio_quefrency_rev1_bcat.hex
    -rw-r--r-- 1 bcat bcat 54967 Jan 11 15:03 lily58_rev1_bcat.hex
    -rwxr-xr-x 1 bcat bcat 78360 Jan 11 15:04 yanghu_unicorne_f411_bcat.bin
    
  4. Doing a dry run, it seems the environment variables aren't being passed to qmk compile:

    $ qmk userspace-compile -n
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Preparing target list...
    Ψ Compilation targets:
    Ψ qmk compile -kb 9key -km bcat
    Ψ qmk compile -kb ai03/polaris -km bcat
    Ψ qmk compile -kb cannonkeys/an_c -km bcat
    Ψ qmk compile -kb cannonkeys/instant60 -km bcat
    Ψ qmk compile -kb crkbd/rev1 -km bcat
    Ψ qmk compile -kb dz60 -km bcat
    Ψ qmk compile -kb dz60 -km bcat
    Ψ qmk compile -kb eco/rev2 -km bcat
    Ψ qmk compile -kb kbdfans/kbd67/hotswap -km bcat
    Ψ qmk compile -kb keebio/bdn9/rev1 -km bcat
    Ψ qmk compile -kb keebio/quefrency/rev1 -km bcat
    Ψ qmk compile -kb lily58/rev1 -km bcat
    Ψ qmk compile -kb yanghu/unicorne/f411 -km bcat
    

Thanks again for the help so far! Let me know if there's more testing I can do. :)

@tzarc
Copy link
Member Author

tzarc commented Jan 11, 2024

Thanks for that -- the testing I'd done was with CONVERT_TO, which seemed to be working fine when I ran it. Guess FORCE_LAYOUT is a special snowflake.

Can I get you to attach .build/parallel_kb_builds.mk from after a qmk userspace-compile, please? Dry run is "fake" and it doesn't actually run the commands internally -- takes too long and doesn't parallelise well. That said, I'll make sure to include the extra vars in its output in the final mergeable PR.

@bcat
Copy link
Contributor

bcat commented Jan 11, 2024

Sure, attached (and renamed to make GitHub happy): parallel_kb_builds.mk.txt

If I'm reading this correctly, FORCE_LAYOUT=foo is getting passed along at least part of the way. I wonder if now I'm just hitting bug #22815 ?

What's interesting is that compiling with FORCE_LAYOUT using make directly in the userspace (like FORCE_LAYOUT=60_tsangan_hhkb make dz60:bcat) does build the specified layout and use the right filename.

@zvecr
Copy link
Member

zvecr commented Jan 11, 2024

I wonder if now I'm just hitting bug #22815 ?

That would be my assumption.

FORCE_LAYOUT issue is somewhat due to locate_keymap in keymap.py where it processes community_layouts without considering the value of FORCE_LAYOUT.

#22815 (comment)

Chaining the context through would be possible, but messy (as that function is also used in other places or can come directly from the environment).

@bcat
Copy link
Contributor

bcat commented Jan 11, 2024

Random side note: Without understanding the underlying implementation details, as a user I feel like it would be nice if layouts were more a "first class" concept in keymap selection. Being able to just say qmk compile -kb dz60 -km bcat -layout 60_tsangan_hhkb, or something like that. I understand this may be nontrivial to do, though.

(Though maybe that doesn't make sense, because someone might have two keyboards with the same layout but still want to configure them differently, and build the whole shebang via userspace infra. So actually, on further thought, maybe the environment variables are better after all, even if they're more verbose.)

@sigprof
Copy link
Contributor

sigprof commented Jan 11, 2024

Is the usage of nested arrays in the JSON representation for the environment variables intentional? I would expect an object there instead:

        [
            "ai03/polaris",
            "bcat",
            {
                "FORCE_LAYOUT": "60_tsangan_hhkb"
            }
        ]

(Maybe even the outer level should be an object with keys like keyboard, keymap, environment; that would be more verbose than the existing format though.)

@tzarc
Copy link
Member Author

tzarc commented Jan 12, 2024

Is the usage of nested arrays in the JSON representation for the environment variables intentional? I would expect an object there instead:

Tomato/tomato. Will swap it over, it's of no real consequence.

@github-actions github-actions bot added the core label Jan 12, 2024
Copy link

Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had activity in the last 45 days. It will be closed in 30 days if no further activity occurs. Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with bug, awaiting review, breaking_change, in progress, or on hold to prevent the issue from being re-flagged.

@github-actions github-actions bot added the stale Issues or pull requests that have become inactive without resolution. label Jun 11, 2024
@tzarc tzarc added awaiting review and removed stale Issues or pull requests that have become inactive without resolution. labels Jun 11, 2024
Copy link
Member

@drashna drashna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

__attribute__((weak))

Tested locally and didn't seem to break anything.

@tzarc tzarc merged commit 380e0c9 into qmk:master Aug 12, 2024
6 checks passed
@tzarc tzarc deleted the userspace-env branch August 12, 2024 12:34
@tzarc tzarc mentioned this pull request Aug 12, 2024
bcat added a commit to bcat/qmk_userspace that referenced this pull request Aug 15, 2024
Now that qmk/qmk_firmware#22887 is merged, I can
use the standard qmk commands. Yay! :D
mopemope pushed a commit to mopemope/qmk_firmware that referenced this pull request Aug 18, 2024
MichaelScofield45 pushed a commit to MichaelScofield45/qmk_firmware that referenced this pull request Aug 18, 2024
phobos42 added a commit to phobos42/qmk_firmware that referenced this pull request Aug 26, 2024
* Add Meow65 (qmk#23427)

* Migrate `LOCKING_*_ENABLE` to Data-Driven: H, Part 1 (qmk#23759)

Affects:

  - `h0oni/deskpad`
  - `h0oni/hotduck`
  - `halfcliff`
  - `halokeys/elemental75`
  - `han60`
  - `hardlineworks/otd_plus`
  - `helix/rev3_4rows`
  - `helix/rev3_5rows`
  - `hfdkb/ac001`
  - `hidtech/bastyl`
  - `hineybush/h08_ocelot`
  - `hineybush/h10`
  - `hineybush/h60`
  - `hineybush/h65`
  - `hineybush/h65_hotswap`
  - `hineybush/h660s`
  - `hineybush/h75_singa`
  - `hineybush/h87a`
  - `hineybush/h88`
  - `hineybush/hbcp`
  - `hineybush/hineyg80`
  - `hineybush/physix`
  - `hineybush/sm68`
  - `hnahkb/freyr`
  - `hnahkb/stella`
  - `hnahkb/vn66`
  - `horizon`
  - `hotdox`
  - `hs60/v1`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: G (qmk#23758)

Affects:

  - `gboards/ergotaco`
  - `gboards/georgi`
  - `gboards/gergo`
  - `geekboards/tester`
  - `geonworks/frogmini/fmh`
  - `geonworks/frogmini/fms`
  - `gh60/revc`
  - `gh60/satan`
  - `ghs/rar`
  - `gkeyboard/gkb_m16`
  - `gkeyboard/gpad8_2r`
  - `gl516/a52gl`
  - `gl516/j73gl`
  - `gl516/n51gl`
  - `gmmk/gmmk2/p65`
  - `gmmk/gmmk2/p96`
  - `gmmk/numpad`
  - `gmmk/pro`
  - `gon/nerd60`
  - `gon/nerdtkl`
  - `gray_studio/aero75`
  - `gray_studio/cod67`
  - `gray_studio/space65`
  - `gray_studio/space65r3`
  - `gray_studio/think65v3`
  - `grid600/press`

* Move VIA config to keymap level (qmk#23754)

* Remove includes of config.h (qmk#23760)

* Migrate `LOCKING_*_ENABLE` to Data-Driven: F (qmk#23757)

Affects:

  - `fallacy`
  - `ffkeebs/puca`
  - `fjlabs/7vhotswap`
  - `fjlabs/ad65`
  - `fjlabs/avalon`
  - `fjlabs/bks65`
  - `fjlabs/bks65solder`
  - `fjlabs/bolsa65`
  - `fjlabs/kf87`
  - `fjlabs/kyuu`
  - `fjlabs/ldk65`
  - `fjlabs/midway60`
  - `fjlabs/mk61rgbansi`
  - `fjlabs/peaker`
  - `fjlabs/polaris`
  - `fjlabs/ready100`
  - `fjlabs/sinanju`
  - `fjlabs/sinanjuwk`
  - `fjlabs/solanis`
  - `fjlabs/swordfish`
  - `fjlabs/tf60ansi`
  - `fjlabs/tf60v2`
  - `fjlabs/tf65rgbv2`
  - `flehrad/downbubble`
  - `flehrad/numbrero`
  - `flehrad/snagpad`
  - `flehrad/tradestation`
  - `fleuron`
  - `fluorite`
  - `flx/lodestone`
  - `flxlb/zplit`
  - `foostan/cornelius`
  - `forever65`
  - `fortitude60/rev1`
  - `foxlab/key65/hotswap`
  - `foxlab/key65/universal`
  - `foxlab/leaf60/hotswap`
  - `foxlab/leaf60/universal`
  - `foxlab/time80`
  - `fr4/southpaw75`
  - `fractal`
  - `fungo/rev1`
  - `funky40`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: H, Part 4 (qmk#23764)

Affects:

  - `handwired/reclined`
  - `handwired/retro_refit`
  - `handwired/selene`
  - `handwired/sick68`
  - `handwired/sick_pad`
  - `handwired/skakunm_dactyl`
  - `handwired/slash`
  - `handwired/snatchpad`
  - `handwired/sono1`
  - `handwired/space_oddity`
  - `handwired/split89`
  - `handwired/split_cloud`
  - `handwired/steamvan/rev1`
  - `handwired/sticc14`
  - `handwired/stream_cheap/2x3`
  - `handwired/stream_cheap/2x4`
  - `handwired/stream_cheap/2x5`
  - `handwired/symmetric70_proto/promicro`
  - `handwired/symmetric70_proto/proton_c`
  - `handwired/symmetry60`
  - `handwired/tennie`
  - `handwired/terminus_mini`
  - `handwired/trackpoint`
  - `handwired/tritium_numpad`
  - `handwired/twadlee/tp69`
  - `handwired/unk/rev1`
  - `handwired/uthol/rev3`
  - `handwired/videowriter`
  - `handwired/wabi`
  - `handwired/woodpad`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: H, Part 3 (qmk#23763)

Affects:

  - `handwired/jn68m`
  - `handwired/jopr`
  - `handwired/jot50`
  - `handwired/jotanck`
  - `handwired/jotpad16`
  - `handwired/jtallbean/split_65`
  - `handwired/juliet`
  - `handwired/k_numpad17`
  - `handwired/kbod`
  - `handwired/ks63`
  - `handwired/leftynumpad`
  - `handwired/lemonpad`
  - `handwired/m40/5x5_macropad`
  - `handwired/macroboard/f401`
  - `handwired/macroboard/f411`
  - `handwired/magicforce61`
  - `handwired/magicforce68`
  - `handwired/mechboards_micropad`
  - `handwired/minorca`
  - `handwired/mutepad`
  - `handwired/nicekey`
  - `handwired/nortontechpad`
  - `handwired/not_so_minidox`
  - `handwired/novem`
  - `handwired/nozbe_macro`
  - `handwired/numpad20`
  - `handwired/obuwunkunubi/spaget`
  - `handwired/oem_ansi_fullsize`
  - `handwired/onekey`
  - `handwired/ortho5x13`
  - `handwired/ortho5x14`
  - `handwired/p65rgb`
  - `handwired/pilcrow`
  - `handwired/polly40`
  - `handwired/postageboard/mini`
  - `handwired/postageboard/r1`
  - `handwired/prime_exl`
  - `handwired/prime_exl_plus`

* Fix font artefact on Reverb keyboard.  (qmk#23761)

* Added MATRIX_HAS_GHOST definition for IBM Model H controller (qmk#23744)

* Migrate `LOCKING_*_ENABLE` to Data-Driven: H, Part 2 (qmk#23762)

Affects:

  - `handwired/108key_trackpoint`
  - `handwired/2x5keypad`
  - `handwired/3dp660`
  - `handwired/412_64`
  - `handwired/42`
  - `handwired/amigopunk`
  - `handwired/aranck`
  - `handwired/atreus50`
  - `handwired/axon`
  - `handwired/battleship_gamepad`
  - `handwired/bdn9_ble`
  - `handwired/bento/rev1`
  - `handwired/bolek`
  - `handwired/brain`
  - `handwired/bstk100`
  - `handwired/cans12er`
  - `handwired/chiron`
  - `handwired/ck4x4`
  - `handwired/cmd60`
  - `handwired/co60/rev6`
  - `handwired/co60/rev7`
  - `handwired/colorlice`
  - `handwired/curiosity`
  - `handwired/dactyl_left`
  - `handwired/dactyl_manuform/4x5`
  - `handwired/dactyl_manuform/4x5_5`
  - `handwired/dactyl_manuform/4x6`
  - `handwired/dactyl_manuform/4x6_4_3`
  - `handwired/dactyl_manuform/4x6_5`
  - `handwired/dactyl_manuform/5x6`
  - `handwired/dactyl_manuform/5x6_2_5`
  - `handwired/dactyl_manuform/5x6_5`
  - `handwired/dactyl_manuform/5x6_6`
  - `handwired/dactyl_manuform/5x6_68`
  - `handwired/dactyl_manuform/5x7`
  - `handwired/dactyl_manuform/6x6/blackpill_f411`
  - `handwired/dactyl_manuform/6x6/promicro`
  - `handwired/dactyl_manuform/6x6_4`
  - `handwired/dactyl_manuform/6x7`
  - `handwired/dactyl_promicro`
  - `handwired/dactyl_rah`
  - `handwired/datahand`
  - `handwired/evk/v1_3`
  - `handwired/fc200rt_qmk`
  - `handwired/fivethirteen`
  - `handwired/floorboard`
  - `handwired/fruity60`
  - `handwired/gamenum`
  - `handwired/hacked_motospeed`
  - `handwired/heisenberg`
  - `handwired/hnah40`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: M, Part 2 (qmk#23773)

Affects:

  - `mkh_studio/bully`
  - `mlego/m48/rev1`
  - `mlego/m60/rev1`
  - `mlego/m60_split/rev1`
  - `mlego/m60_split/rev2`
  - `mntre`
  - `mode/m65ha_alpha`
  - `mode/m65hi_alpha`
  - `mode/m65s`
  - `mode/m80v1/m80h`
  - `mode/m80v1/m80s`
  - `mode/m80v2/m80v2h`
  - `mode/m80v2/m80v2s`
  - `molecule`
  - `momoka_ergo`
  - `monarch`
  - `monsgeek/m1`
  - `monsgeek/m3`
  - `monsgeek/m5`
  - `monsgeek/m6`
  - `monstargear/xo87/rgb`
  - `monstargear/xo87/solderable`
  - `montsinger/rebound/rev1`
  - `montsinger/rebound/rev2`
  - `montsinger/rebound/rev3`
  - `montsinger/rebound/rev4`
  - `montsinger/rewind`
  - `moon`
  - `morizon`
  - `mountainblocks/mb17`
  - `mt/blocked65`
  - `mt/mt64rgb`
  - `mt/mt980`
  - `mtbkeys/mtb60/hotswap`
  - `mtbkeys/mtb60/solder`
  - `murcielago/rev1`
  - `mxss`
  - `mysticworks/wyvern`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: L (qmk#23771)

Affects:

  - `labbe/labbeminiv1`
  - `labyrinth75`
  - `laneware/lpad`
  - `laneware/lw67`
  - `laneware/lw75`
  - `laneware/macro1`
  - `laneware/raindrop`
  - `laser_ninja/pumpkinpad`
  - `latincompass/latin47ble`
  - `lazydesigners/dimple/ortho`
  - `lazydesigners/dimple/staggered/rev1`
  - `lazydesigners/dimple/staggered/rev2`
  - `lazydesigners/dimple/staggered/rev3`
  - `lazydesigners/dimple`
  - `lazydesigners/the50`
  - `lazydesigners/the60/rev1`
  - `lets_split/rev1`
  - `lets_split/rev2`
  - `lfkeyboards/lfk65_hs`
  - `lfkeyboards/lfk78/revb`
  - `lfkeyboards/lfk78/revc`
  - `lfkeyboards/lfk78/revj`
  - `lfkeyboards/lfk87/reva`
  - `lfkeyboards/lfk87/revc`
  - `lfkeyboards/lfkpad`
  - `lfkeyboards/mini1800/reva`
  - `lfkeyboards/mini1800/revc`
  - `lfkeyboards/smk65/revb`
  - `lfkeyboards/smk65/revf`
  - `linworks/fave60`
  - `lizard_trick/tenkey_plusplus`
  - `lm_keyboard/lm60n`
  - `lucid/alexa`
  - `lucid/alexa_solder`
  - `lucid/kbd8x_hs`
  - `lucid/phantom_hs`
  - `lucid/phantom_solder`
  - `lucid/scarlet`
  - `lyso1/lck75`
  - `lyso1/lefishe`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: I-J (qmk#23767)

Affects:

  - `ianklug/grooveboard`
  - `ibm/model_m/modelh`
  - `ibm/model_m_122/ibm122m`
  - `ibnuda/gurindam`
  - `idb/idb_60`
  - `idobao/id75/v1`
  - `idobao/id75/v2`
  - `idobao/id96`
  - `idobao/montex/v1`
  - `illuminati/is0`
  - `illusion/rosa`
  - `ilumkb/primus75`
  - `ilumkb/volcano660`
  - `inland/kb83`
  - `input_club/ergodox_infinity`
  - `irene`
  - `iriskeyboards`
  - `iron180`
  - `jacky_studio/bear_65/rev1`
  - `jacky_studio/bear_65/rev2`
  - `jacky_studio/s7_elephant/rev1`
  - `jacky_studio/s7_elephant/rev2`
  - `jadookb/jkb65`
  - `jae/j01`
  - `jagdpietr/drakon`
  - `jd40`
  - `jd45`
  - `jels/boaty`
  - `jels/jels60/v1`
  - `jels/jels60/v2`
  - `jels/jels88`
  - `jolofsor/denial75`
  - `jorne/rev1`
  - `joshajohnson/hub16`
  - `joshajohnson/hub20`
  - `jukaie/jk01`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: N (qmk#23774)

Affects:

  - `nacly/sodium42`
  - `nacly/sodium50`
  - `nacly/sodium62`
  - `nacly/splitreus62`
  - `nacly/ua62`
  - `nek_type_a`
  - `nemui`
  - `nibiria/stream15`
  - `nightingale_studios/hailey`
  - `nightly_boards/adellein`
  - `nightly_boards/alter/rev1`
  - `nightly_boards/alter_lite`
  - `nightly_boards/conde60`
  - `nightly_boards/daily60`
  - `nightly_boards/jisoo`
  - `nightly_boards/n2`
  - `nightly_boards/n40_o`
  - `nightly_boards/n60_s`
  - `nightly_boards/n87`
  - `nightly_boards/n9`
  - `nightly_boards/octopad`
  - `nightly_boards/octopadplus`
  - `nightly_boards/paraluman`
  - `nightly_boards/ph_arisu`
  - `nightmare`
  - `nimrod`
  - `nix_studio/oxalys80`
  - `nopunin10did/jabberwocky/v1`
  - `nopunin10did/jabberwocky/v2`
  - `nopunin10did/railroad/rev0`
  - `novelkeys/novelpad`
  - `noxary/220`
  - `noxary/260`
  - `noxary/268`
  - `noxary/268_2`
  - `noxary/268_2_rgb`
  - `noxary/280`
  - `noxary/378`
  - `noxary/valhalla`
  - `noxary/vulcan`
  - `noxary/x268`
  - `numatreus`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: K, Part 1 (qmk#23768)

Affects:

  - `kabedon/kabedon98e`
  - `kagizaraya/chidori`
  - `kagizaraya/halberd`
  - `kagizaraya/miniaxe`
  - `kagizaraya/scythe`
  - `kakunpc/angel17/alpha`
  - `kakunpc/angel17/rev1`
  - `kakunpc/angel64/alpha`
  - `kakunpc/angel64/rev1`
  - `kakunpc/business_card/alpha`
  - `kakunpc/business_card/beta`
  - `kakunpc/choc_taro`
  - `kakunpc/rabbit_capture_plan`
  - `kakunpc/suihankey/alpha`
  - `kakunpc/suihankey/rev1`
  - `kakunpc/suihankey/split/alpha`
  - `kakunpc/suihankey/split/rev1`
  - `kakunpc/thedogkeyboard`
  - `kapcave/arya`
  - `kapcave/gskt00`
  - `kapcave/paladin64`
  - `kapl/rev1`
  - `kb58`
  - `kb_elmo/aek2_usb`
  - `kb_elmo/m0110a_usb`
  - `kb_elmo/m0116_usb`
  - `kbdclack/kaishi65`
  - `kbdfans/bella/soldered`
  - `kbdfans/bounce/pad`
  - `kbdfans/jm60`
  - `kbdfans/kbd19x`
  - `kbdfans/kbd4x`
  - `kbdfans/kbd66`
  - `kbdfans/kbd67/hotswap`
  - `kbdfans/kbd67/mkii_soldered`
  - `kbdfans/kbd6x`
  - `kbdfans/kbd75/rev1`
  - `kbdfans/kbd75/rev2`
  - `kbdfans/kbd8x`
  - `kbdfans/kbd8x_mk2`
  - `kbdfans/kbdpad/mk2`
  - `kbdfans/maja_soldered`
  - `kbdfans/niu_mini`
  - `kbdfans/phaseone`
  - `kbdmania/kmac`
  - `kbdmania/kmac_pad`
  - `kc60`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: M, Part 1 (qmk#23772)

Affects:

  - `m10a`
  - `machine_industries/m4_a`
  - `magic_force/mf34`
  - `majistic`
  - `makenova/omega/omega4`
  - `makrosu`
  - `manta60`
  - `maple_computing/christmas_tree/v2017`
  - `maple_computing/ivy/rev1`
  - `maple_computing/launchpad/rev1`
  - `maple_computing/minidox/rev1`
  - `maple_computing/the_ruler`
  - `marksard/leftover30`
  - `marksard/treadstone48/rev1`
  - `marksard/treadstone48/rev2`
  - `masterworks/classy_tkl/rev_a`
  - `maxipad`
  - `maxr1998/phoebe`
  - `mc_76k`
  - `mechkeys/acr60`
  - `mechkeys/alu84`
  - `mechkeys/espectro`
  - `mechkeys/mechmini/v2`
  - `mechkeys/mk60`
  - `mechlovin/hannah910/rev1`
  - `mechlovin/hannah910/rev2`
  - `mechlovin/hannah910/rev3`
  - `mechlovin/jay60`
  - `mechlovin/tmkl`
  - `mechwild/bde/lefty`
  - `mechwild/bde/rev2`
  - `mechwild/bde/righty`
  - `mechwild/mercutio`
  - `mechwild/mokulua/mirrored`
  - `mechwild/mokulua/standard`
  - `mechwild/murphpad`
  - `mechwild/obe`
  - `mechwild/puckbuddy`
  - `meletrix/zoom98`
  - `melgeek/mj6xy/rev3`
  - `meme`
  - `meow65`
  - `mesa/mesa_tkl`
  - `meson`
  - `mikeneko65`
  - `millipad`
  - `mini_elixivy`
  - `mini_ten_key_plus`
  - `minimon/index_tab`
  - `mint60`
  - `misonoworks/karina`
  - `miuni32`
  - `mixi`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: K, Part 3 (qmk#23770)

Affects:

  - `kindakeyboards/conone65`
  - `kinesis`
  - `kingly_keys/ave/ortho`
  - `kingly_keys/ave/staggered`
  - `kingly_keys/little_foot`
  - `kingly_keys/romac`
  - `kingly_keys/romac_plus`
  - `kingly_keys/ropro`
  - `kingly_keys/smd_milk`
  - `kingly_keys/soap`
  - `kira/kira75`
  - `kisakeyluxury/qtz`
  - `kiserdesigns/madeline`
  - `kiwikeebs/macro`
  - `kiwikeebs/macro_v2`
  - `kiwikey/borderland`
  - `kiwikey/kawii9`
  - `kiwikey/wanderland`
  - `kkatano/bakeneko60`
  - `kkatano/bakeneko65/rev2`
  - `kkatano/bakeneko65/rev3`
  - `kkatano/bakeneko80`
  - `kkatano/wallaby`
  - `kkatano/yurei`
  - `knops/mini`
  - `kona_classic`
  - `kopibeng/mnk60_stm32`
  - `kopibeng/mnk65`
  - `kopibeng/mnk65_stm32`
  - `kopibeng/mnk88`
  - `kopibeng/typ65`
  - `kopibeng/xt60`
  - `kopibeng/xt60_singa`
  - `kopibeng/xt65`
  - `kopibeng/xt8x`
  - `kprepublic/bm16s`
  - `kprepublic/bm40hsrgb/rev1`
  - `kprepublic/bm65hsrgb/rev1`
  - `kprepublic/bm68hsrgb/rev1`
  - `kprepublic/bm980hsrgb`
  - `kprepublic/cospad`
  - `ktec/daisy`
  - `kumaokobo/kudox/columner`
  - `kumaokobo/kudox/rev1`
  - `kumaokobo/kudox/rev2`
  - `kumaokobo/kudox/rev3`
  - `kumaokobo/kudox_full/rev1`
  - `kumaokobo/kudox_game/rev1`
  - `kumaokobo/kudox_game/rev2`
  - `kumaokobo/pico/65keys`
  - `kumaokobo/pico/70keys`
  - `kv/revt`
  - `kwub/bloop`
  - `ky01`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: K, Part 2 (qmk#23769)

Affects:

  - `keebio/bamfk4`
  - `keebio/bdn9/rev1`
  - `keebio/bdn9/rev2`
  - `keebio/bfo9000`
  - `keebio/bigswitchseat`
  - `keebio/choconum`
  - `keebio/dilly`
  - `keebio/dsp40/rev1`
  - `keebio/ergodicity`
  - `keebio/foldkb/rev1`
  - `keebio/fourier`
  - `keebio/iris/rev1`
  - `keebio/iris/rev1_led`
  - `keebio/iris/rev2`
  - `keebio/iris/rev3`
  - `keebio/iris/rev4`
  - `keebio/kbo5000/rev1`
  - `keebio/levinson/rev1`
  - `keebio/levinson/rev2`
  - `keebio/levinson/rev3`
  - `keebio/nyquist/rev1`
  - `keebio/nyquist/rev2`
  - `keebio/nyquist/rev3`
  - `keebio/quefrency/rev1`
  - `keebio/quefrency/rev4`
  - `keebio/quefrency/rev5`
  - `keebio/rorschach/rev1`
  - `keebio/sinc/rev1`
  - `keebio/sinc/rev2`
  - `keebio/tragicforce68`
  - `keebio/tukey`
  - `keebio/viterbi/rev1`
  - `keebio/viterbi/rev2`
  - `keebio/wavelet`
  - `keebio/wtf60`
  - `keebsforall/coarse60`
  - `keebsforall/freebirdnp/lite`
  - `keebsforall/freebirdnp/pro`
  - `keebsforall/freebirdtkl`
  - `keebwerk/nano_slider`
  - `keebzdotnet/fme`
  - `keebzdotnet/wazowski`
  - `keyboardio/atreus`
  - `keycapsss/kimiko/rev1`
  - `keycapsss/o4l_5x12`
  - `keygem/kg60ansi`
  - `keygem/kg65rgbv2`
  - `keyhive/absinthe`
  - `keyhive/ergosaurus`
  - `keyhive/lattice60`
  - `keyhive/maypad`
  - `keyhive/navi10/rev0`
  - `keyhive/navi10/rev2`
  - `keyhive/navi10/rev3`
  - `keyhive/opus`
  - `keyhive/southpole`
  - `keyhive/ut472`
  - `keyprez/bison`
  - `keyprez/corgi`
  - `keyprez/rhino`
  - `keyprez/unicorn`
  - `keysofkings/twokey`
  - `keystonecaps/gameroyadvance`

* Remove some useless code from keymaps (qmk#23787)

* Migrate `LOCKING_*_ENABLE` to Data-Driven: U-V (qmk#23786)

Affects:

  - `uk78`
  - `ungodly/nines`
  - `unikeyboard/diverge3`
  - `unikeyboard/divergetm2`
  - `unikeyboard/felix`
  - `uranuma`
  - `utd80`
  - `v60_type_r`
  - `vagrant_10`
  - `viendi8l`
  - `viktus/at101_bh`
  - `viktus/omnikey_bh`
  - `viktus/smolka`
  - `viktus/sp111`
  - `viktus/styrka`
  - `viktus/z150_bh`
  - `vitamins_included/rev1`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: T (qmk#23785)

Affects:

  - `takashicompany/center_enter`
  - `takashicompany/endzone34`
  - `takashicompany/qoolee`
  - `takashicompany/radialex`
  - `takashiski/namecard2x4/rev1`
  - `takashiski/namecard2x4/rev2`
  - `takashiski/otaku_split/rev0`
  - `takashiski/otaku_split/rev1`
  - `taleguers/taleguers75`
  - `tanuki`
  - `team0110/p1800fl`
  - `technika`
  - `tenki`
  - `tetris`
  - `tg4x`
  - `the_royal/liminal`
  - `the_royal/schwann`
  - `thevankeyboards/bananasplit`
  - `thevankeyboards/caravan`
  - `thevankeyboards/jetvan`
  - `thevankeyboards/minivan`
  - `thevankeyboards/roadkit`
  - `tkc/california`
  - `tkc/m0lly`
  - `tkc/tkc1800`
  - `tkc/tkl_ab87`
  - `tkw/stoutgat/v2`
  - `tmo50`
  - `toad`
  - `toffee_studio/blueberry`
  - `tokyokeyboard/alix40`
  - `tokyokeyboard/tokyo60`
  - `tominabox1/adalyn`
  - `tominabox1/le_chiffre`
  - `tominabox1/qaz`
  - `tr60w`
  - `treasure/type9`
  - `tszaboo/ortho4exent`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: O (qmk#23778)

Affects:

  - `oddball`
  - `oddforge/vea`
  - `ok60`
  - `om60`
  - `omkbd/ergodash/mini`
  - `omkbd/ergodash/rev1`
  - `omkbd/runner3680/3x6`
  - `omkbd/runner3680/3x7`
  - `omkbd/runner3680/3x8`
  - `omkbd/runner3680/4x6`
  - `omkbd/runner3680/4x7`
  - `omkbd/runner3680/4x8`
  - `omkbd/runner3680/5x6`
  - `omkbd/runner3680/5x6_5x8`
  - `omkbd/runner3680/5x7`
  - `omkbd/runner3680/5x8`
  - `omnikeyish`
  - `orange75`
  - `org60`
  - `ortho5by12`
  - `orthocode`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: P, Part 1 (qmk#23779)

Affects:

  - `p3d/eu_isolation`
  - `p3d/glitch`
  - `p3d/q4z`
  - `p3d/synapse`
  - `p3d/tw40`
  - `panc40`
  - `papercranekeyboards/gerald65`
  - `parallel/parallel_65/hotswap`
  - `parallel/parallel_65/soldered`
  - `pdxkbc`
  - `pearlboards/atlas`
  - `pearlboards/pandora`
  - `pearlboards/pearl`
  - `pearlboards/zeus`
  - `pearlboards/zeuspad`
  - `pegasus`
  - `phantom`
  - `phoenix`
  - `picolab/frusta_fundamental`
  - `pimentoso/paddino02/rev1`
  - `pimentoso/paddino02/rev2/left`
  - `pimentoso/paddino02/rev2/right`
  - `pisces`
  - `pizzakeyboards/pizza65`
  - `pkb65`
  - `planck`
  - `playkbtw/ca66`
  - `playkbtw/pk60`
  - `playkbtw/pk64rgb`
  - `pluckey`
  - `plume/plume65`
  - `plywrks/ahgase`
  - `plywrks/lune`
  - `pohjolaworks/louhi`
  - `polycarbdiet/s20`
  - `pom_keyboards/tnln95`
  - `portal_66/hotswap`
  - `portal_66/soldered`
  - `pos78`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: P, Part 2 (qmk#23780)

Affects:

  - `preonic/rev1`
  - `preonic/rev2`
  - `preonic/rev3`
  - `preonic/rev3_drop`
  - `primekb/meridian/ktr1010`
  - `primekb/meridian/ws2812`
  - `primekb/meridian_rgb`
  - `primekb/prime_m`
  - `primekb/prime_o`
  - `primekb/prime_r`
  - `projectcain/relic`
  - `projectcain/vault45`
  - `projectd/65/projectd_65_ansi`
  - `projectd/75/ansi`
  - `projectkb/alice/rev1`
  - `projectkb/alice/rev2`
  - `projectkb/signature65`
  - `projectkb/signature87`
  - `prototypist/allison`
  - `prototypist/allison_numpad`
  - `prototypist/j01`
  - `psuieee/pluto12`
  - `pteron36`
  - `puck`
  - `punk75`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: W, Part 1 (qmk#23788)

Affects:

  - `waldo`
  - `walletburner/cajal`
  - `walletburner/neuron`
  - `wavtype/foundation`
  - `wavtype/p01_ultra`
  - `weirdo/geminate60`
  - `weirdo/kelowna/rgb64`
  - `weirdo/ls_60`
  - `weirdo/naiping/np64`
  - `weirdo/naiping/nphhkb`
  - `weirdo/naiping/npminila`
  - `weirdo/tiger910`
  - `wekey/polaris`
  - `westfoxtrot/aanzee`
  - `westfoxtrot/cyclops`
  - `westfoxtrot/cypher/rev1`
  - `westfoxtrot/cypher/rev5`
  - `westfoxtrot/prophet`
  - `westm/westm9`
  - `westm/westm68`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: Q-R (qmk#23781)

Affects:

  - `qpockets/space_space/rev1`
  - `qpockets/space_space/rev2`
  - `quad_h/lb75`
  - `quantrik/kyuu`
  - `qwertlekeys/calice`
  - `rabbit/rabbit68`
  - `rainkeebs/delilah`
  - `rainkeebs/rainkeeb`
  - `rainkeebs/yasui`
  - `rart/rart45`
  - `rart/rart4x4`
  - `rart/rart60`
  - `rart/rart67`
  - `rart/rart67m`
  - `rart/rart75`
  - `rart/rart75m`
  - `rart/rartand`
  - `rart/rartland`
  - `rart/rartlice`
  - `rart/rartlite`
  - `rart/rartpad`
  - `rate/pistachio/rev1`
  - `rate/pistachio/rev2`
  - `rate/pistachio_mp`
  - `rate/pistachio_pro`
  - `redox/rev1`
  - `redscarf_iiplus/verb`
  - `redscarf_iiplus/verc`
  - `redscarf_iiplus/verd`
  - `retro_75`
  - `reversestudio/decadepad`
  - `reviung/reviung5`
  - `reviung/reviung33`
  - `reviung/reviung34`
  - `reviung/reviung39`
  - `reviung/reviung41`
  - `reviung/reviung53`
  - `rgbkb/zen/rev1`
  - `rgbkb/zen/rev2`
  - `rmi_kb/aelith`
  - `rmi_kb/chevron`
  - `rmi_kb/herringbone/pro`
  - `rmi_kb/herringbone/v1`
  - `rmi_kb/squishy65`
  - `rmi_kb/squishyfrl`
  - `rmi_kb/squishytkl`
  - `rmi_kb/wete/v1`
  - `rmi_kb/wete/v2`
  - `rocketboard_16`
  - `rominronin/katana60/rev1`
  - `rominronin/katana60/rev2`
  - `roseslite`
  - `rotr`
  - `rpiguy9907/southpaw66`
  - `rubi`
  - `rura66/rev1`
  - `ryanbaekr/rb1`
  - `ryanbaekr/rb18`
  - `ryanbaekr/rb69`
  - `ryanbaekr/rb86`
  - `ryanbaekr/rb87`
  - `ryanskidmore/rskeys100`
  - `ryloo_studio/m0110`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: S, Part 2 (qmk#23784)

Affects:

  - `slz40`
  - `smithrune/iron160/iron160_s`
  - `smithrune/iron165r2/f072`
  - `smithrune/iron165r2/f411`
  - `smithrune/iron180`
  - `smithrune/iron180v2/v2h`
  - `smithrune/iron180v2/v2s`
  - `smoll/lefty`
  - `snampad`
  - `sneakbox/aliceclone`
  - `sneakbox/disarray/ortho`
  - `sneakbox/disarray/staggered`
  - `soup10`
  - `soy20`
  - `sparrow62`
  - `split67`
  - `splitish`
  - `splitography`
  - `star75`
  - `stello65/beta`
  - `stello65/hs_rev1`
  - `stello65/sl_rev1`
  - `stenokeyboards/the_uni/pro_micro`
  - `stenokeyboards/the_uni/usb_c`
  - `strech/soulstone`
  - `studiokestra/bourgeau`
  - `studiokestra/cascade`
  - `studiokestra/frl84`
  - `studiokestra/galatea/rev1`
  - `studiokestra/galatea/rev2`
  - `studiokestra/galatea/rev3`
  - `studiokestra/line_friends_tkl`
  - `studiokestra/nascent`
  - `studiokestra/nue`
  - `suavity/ehan`
  - `subatomic`
  - `switchplate/southpaw_65`
  - `switchplate/southpaw_fullsize`
  - `switchplate/switchplate910`
  - `sx60`
  - `system76/launch_1`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: S, Part 1 (qmk#23783)

Affects:

  - `salicylic_acid3/7skb/rev1`
  - `salicylic_acid3/7splus`
  - `salicylic_acid3/ajisai74`
  - `salicylic_acid3/ergoarrows`
  - `salicylic_acid3/getta25/rev1`
  - `salicylic_acid3/jisplit89/rev1`
  - `salicylic_acid3/nafuda`
  - `salicylic_acid3/naked48/rev1`
  - `salicylic_acid3/naked60/rev1`
  - `salicylic_acid3/naked64/rev1`
  - `salicylic_acid3/nknl7en`
  - `salicylic_acid3/nknl7jp`
  - `salicylic_acid3/setta21/rev1`
  - `sandwich/keeb68`
  - `satt/vision`
  - `sauce/mild`
  - `scatter42`
  - `sck/gtm`
  - `sck/m0116b`
  - `sck/neiso`
  - `sekigon/grs_70ec`
  - `sendyyeah/pix`
  - `senselessclay/ck65`
  - `senselessclay/gos65`
  - `senselessclay/had60`
  - `sentraq/s60_x/default`
  - `sentraq/s60_x/rgb`
  - `sentraq/s65_plus`
  - `sentraq/s65_x`
  - `sets3n/kk980`
  - `shambles`
  - `shandoncodes/flygone60/rev3`
  - `shandoncodes/mino/hotswap`
  - `shapeshifter4060`
  - `shiro`
  - `shk9`
  - `sidderskb/majbritt/rev2`
  - `sixkeyboard`
  - `skeletonkbd/skeletonnumpad`
  - `skme/zeno`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: W, Part 2 (qmk#23789)

Affects:

  - `wilba_tech/rama_works_kara`
  - `wilba_tech/rama_works_koyu`
  - `wilba_tech/rama_works_m10_b`
  - `wilba_tech/rama_works_m10_c`
  - `wilba_tech/rama_works_m50_a`
  - `wilba_tech/rama_works_m50_ax`
  - `wilba_tech/rama_works_m60_a`
  - `wilba_tech/rama_works_m65_b`
  - `wilba_tech/rama_works_m65_bx`
  - `wilba_tech/rama_works_m6_a`
  - `wilba_tech/rama_works_m6_b`
  - `wilba_tech/rama_works_u80_a`
  - `wilba_tech/wt60_a`
  - `wilba_tech/wt60_b`
  - `wilba_tech/wt60_bx`
  - `wilba_tech/wt60_c`
  - `wilba_tech/wt60_d`
  - `wilba_tech/wt60_g`
  - `wilba_tech/wt60_g2`
  - `wilba_tech/wt60_h1`
  - `wilba_tech/wt60_h2`
  - `wilba_tech/wt60_h3`
  - `wilba_tech/wt60_xt`
  - `wilba_tech/wt65_a`
  - `wilba_tech/wt65_b`
  - `wilba_tech/wt65_d`
  - `wilba_tech/wt65_f`
  - `wilba_tech/wt65_fx`
  - `wilba_tech/wt65_g`
  - `wilba_tech/wt65_g2`
  - `wilba_tech/wt65_h1`
  - `wilba_tech/wt65_xt`
  - `wilba_tech/wt65_xtx`
  - `wilba_tech/wt69_a`
  - `wilba_tech/wt70_jb`
  - `wilba_tech/wt75_a`
  - `wilba_tech/wt75_b`
  - `wilba_tech/wt75_c`
  - `wilba_tech/wt80_a`
  - `wilba_tech/wt80_g`
  - `wilba_tech/zeal60`
  - `wilba_tech/zeal65`
  - `woodkeys/meira/featherble`
  - `wsk/alpha9`
  - `wsk/g4m3ralpha`
  - `wsk/gothic50`
  - `wsk/gothic70`
  - `wsk/houndstooth`
  - `wsk/jerkin`
  - `wsk/kodachi50`
  - `wsk/pain27`
  - `wsk/sl40`
  - `wsk/tkl30`
  - `wuque/ikki68`
  - `wuque/mammoth20x`
  - `wuque/mammoth75x`
  - `wuque/nemui65`
  - `wuque/tata80/wk`
  - `wuque/tata80/wkl`

* Migrate `LOCKING_*_ENABLE` to Data-Driven: X-Z (qmk#23790)

Affects:

  - `x16`
  - `xelus/akis`
  - `xelus/dharma`
  - `xelus/kangaroo/rev1`
  - `xelus/kangaroo/rev2`
  - `xelus/ninjin`
  - `xelus/pachi/mini_32u4`
  - `xelus/pachi/rev1`
  - `xelus/snap96`
  - `xelus/xs108`
  - `xiudi/xd60/rev2`
  - `xiudi/xd60/rev3`
  - `xiudi/xd68`
  - `xiudi/xd75`
  - `xiudi/xd84pro`
  - `xiudi/xd87`
  - `xmmx`
  - `ydkb/chili`
  - `ydkb/grape`
  - `ydkb/just60`
  - `yiancardesigns/barleycorn`
  - `yiancardesigns/gingham`
  - `yiancardesigns/seigaiha`
  - `ymdk/melody96/soldered`
  - `ymdk/np21`
  - `ymdk/yd60mq`
  - `ymdk/ymd09`
  - `ymdk/ymd67`
  - `yoichiro/lunakey_mini`
  - `yushakobo/quick7`
  - `yynmt/acperience12/rev1`
  - `yynmt/dozen0`
  - `yynmt/kagamidget`
  - `zigotica/z12`
  - `zigotica/z34`
  - `zj68`
  - `zlant`
  - `zoo/wampus`
  - `zsa/moonlander`
  - `ztboards/after`
  - `ztboards/noon`

* Update GPIO macros in keymaps (qmk#23792)

* noroadsleft's 0.25.0 Changelogs and Touch-Ups (qmk#23793)

* Modify PR23309 changelog

Adds a direct link to the pull request.

* Add PR23329 changelog

* Update keyboard aliases file

Updates the legacy keyboard aliases for the JJ40 and JJ50, which have
been moved again for version 0.25.0.

* Minor touch-up for JJ40 rev1 readme

* 2024 Q2 changelog (qmk#23794)

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>

* Merge point for 2024q2 Breaking Changes.

- Remove `develop` notice from readme.

* Workaround for broken ChibiOS startup (qmk#23822)

* Decrease CPU count by one to try and stop GHA from killing runners. (qmk#23826)

* Vitepress conversion of docs. (qmk#23795)

* [docs] Fix code blocks overflowing page width (qmk#23829)

Fix code blocks overflowing page width

* [docs] Better logo SVG (qmk#23828)

* [docs] Update "Get Started" blocks (qmk#23830)

Update "Get Started" blocks

* [docs] Fix old anchor IDs (qmk#23831)

* Docs theme updates (qmk#23832)

* [docs] Remove gitbook directory (qmk#23839)

* [docs] Organize driver & feature docs into subfolders (qmk#23848)

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Fix Vitamins Included Keymap Formatting (qmk#23803)

* [docs] Add ability to redirect based on input path. (qmk#23851)

* [FIX] ChibiOS: USB Digitizer and Joystick IN endpoint compilation (qmk#23854)

Co-authored-by: Ryan <fauxpark@gmail.com>

* Add helper `make` targets for formatting and pytest. (qmk#23858)

* Fixup build failures. (qmk#23869)

* Fix documentation error (qmk#23872)

Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>

* Add SyenaKeyboards Elaruus (qmk#23870)

* add syenakeyboard elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards/elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* Update keyboards/syenakeyboards/elaruus/keyboard.json

Co-authored-by: jack <0x6a73@protonmail.com>

* Update keyboards/syenakeyboards/elaruus/keymaps/default/keymap.c

Co-authored-by: jack <0x6a73@protonmail.com>

* Update keyboards/syenakeyboards/elaruus/keymaps/via/keymap.c

Co-authored-by: jack <0x6a73@protonmail.com>

---------

Co-authored-by: Syenasweta <syenasweta@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>

* Fix broken link in PR checklist (qmk#23877)

* Fix Tri-Layer Keycode Descriptions (qmk#23888)

* [Keyboard] add jaykeeb jk60 (qmk#23876)

* Fix Iris/Irispad keymaps (qmk#23856)

* Re-implement `eeprom_write_qword` as define (qmk#23890)

* Slight clarification of LED/RGB Matrix custom effect docs (qmk#23897)

* [Keyboard] Fix settings for 4pplet/waffling60 (qmk#23862)

* Remove VIA_ENABLE from default keymaps. (qmk#23903)

* VIA keymap deprecation notice. (qmk#23905)

* Fixup docs. (qmk#23906)

* Ensure documentation pull requests build (qmk#23908)

* Add API reference section for LED/RGB Matrix docs (qmk#23902)

* Fix nonunique anchors (qmk#23910)

* Add missing encode enable for BAMFK-1 (qmk#23821)

Add missing encode enable

* Fix order of RGB LEDs to correct one for Iris CE (qmk#23914)

* Remove suggestion of creating issues for unsupported keyboards. (qmk#23918)

* [Keyboard] Enable dip switch for Keychron Q4 (qmk#23889)

* fix keymap for kprepublic bm60hsrgb_iso (qmk#23733)



Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>

* [Keyboard] Add Altair-X (qmk#23879)


Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>

* [Keyboard] Add Altair (qmk#23878)

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>

* Various keyboard fixes (qmk#23919)

* [CLI] Don't `exit()` when certain exceptions occur. (qmk#23442)

* [Keyboard] ErgoStrafer RGB (qmk#22936)

* adding ergostrafer rgb

* removing comment

* [CLI] Older python compat. (qmk#23933)

* `ergodox_ez/base`: Add missing `features` object (qmk#23935)

* Add Chiri CE (qmk#23926)

* Add Chiri CE

* Add more layers for dynamic keymap

* Move EEPROM clear

* Convert to keymap.json

* Change bootmagic matrix position

* keyboard.json schema: set minimum value for `key_unit` (qmk#23937)

* keyboard.json schema: set minimum value for `key_unit`

* Fix invalid `matrix_size` in keyboard.json

* Fix bad layout for silverbullet44

* Mechwild OBE/Waka60: Fix build warnings (qmk#23929)

* Strip decimals from RGB Matrix layout positions (qmk#23943)

* Remove references to bootloadHID flashing page in keyboard readmes (qmk#23942)

* Remove references to bootloadHID flashing page in keyboard readmes

* Remove bootloadHID flashing page

* Update RGB matrix indicator example  (qmk#23947)

Changed the example in indicator-examples-2 to use a compound literal, otherwise the code fails to compile.

* Update 'qmk import-kbfirmware' to use 'keyboard.json' (qmk#23960)

* [Keyboard] fixes for ZSA Voyager (qmk#23912)

* Fix leftover reference to previous AW20216S EN pin definition (qmk#23974)

* Update what's powering QMK docs (qmk#23977)

* Fix 'qmk import-kbfirmware' WS2812 config (qmk#23976)

* Update documentation suggestion in top level readme (qmk#23978)

* `handwired/symmetric70_proto`: add `keyboard.json` (qmk#23966)

* Rename layouts containing keyboard name (qmk#23930)

* Add support for userspace to docker build commands. (qmk#23988)

* `custommk/ergostrafer_rgb`: move to keyboard.json (qmk#23990)

* Remove some redundant 'blank' files (qmk#23995)

* Fix docker_cmd.sh when userspace is not configured (qmk#23997)

* `helix/pico` and `rev2`: add `keyboard.json`s (qmk#23964)

* `hs60/v2/hhkb`: Adjust layout name (qmk#23998)

* `xelus/snap96`: add matrix diagram and some additional layouts (qmk#23992)

* Add support for Equanimity (qmk#23965)

* Add Equanimity files

* Update keyboard.json format

* Update readme.md

* CRLF to LF

* Force LF and correct rules.mk

* Remove config.h

* Remove rules.mk

* Update keymap.c

* Update keyboard.json

* Update name in readme.md

* [Keyboard] Add Elysian (qmk#23949)

* adding Elysian

* corrections from zvecr

* Add Nyquist Rev. 5 (qmk#23971)

* Add Nyquist Rev. 5

* Remove unused keymap

* `clueboard/card`: Swap layout and alias (qmk#24007)

* `tzarc/djinn`: adjust layout name (qmk#24012)

* `ez_maker`: adjust layout names (qmk#24015)

* `h0oni/deskpad` and `hotduck`: adjust layout names (qmk#24004)

* `jels/boaty`: adjust layout name (qmk#24013)

* `horrortroll/handwired_k552`: fix RGB Matrix LED config (qmk#24014)

* Fix ploopy Adept/Madromys link (qmk#24018)

* Fix 'qmk new-keyboard' processing of development_board (qmk#23996)

* Fix index EC Dolice (qmk#24033)

* Update keyboard.json

Fixed wrong index in keyboard.json

* Small touch layout

* Update keymap for KLC x TGR Lena (qmk#23688)

* `vertex/arc60h`: add additional layouts (qmk#24023)

* Minimum python version listing. (qmk#23989)

* [Keyboard] Add Ashwing66 (qmk#24031)

* Create hello.txt

* Add files via upload

* Create keymap.c

* Ashwing66

* Update readme.md

* Update keymap.c

* Ashwing66 addition

* Ashwing66 addition

* Changes as per request

* Changes as per request

* Changes as per request, Updated repo, fixed filenames

* 02-Jul-11:04:08

* monsgeek/m5: make numlock and capslock LEDs work (qmk#24027)

* [Keyboard] Add chlx lfn merro (qmk#24026)

* add previous working files to new branch

* update config files. tested via version

* update per qmk PR requested changes - 1. rename info.json -> keyboard.json, move config.h -> keyamps/via/config.h, remove rules.mk

* update photo link for pcb

* remove redundant community keymaps

* Update keyboards/chlx/lfn_merro60/keymaps/default/keymap.c

correct keycode for iso keys

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* switch image url to source from imgur instead of github

---------

Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* [Keyboard] Addition of EC 60X (qmk#24028)

* Addition of EC 60X

* Update keyboards/cipulot/ec_60x/keymaps/via/keymap.c

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keymaps/default/keymap.c

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5f49ef6.

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5fb9706.

* revert of what was done with the layouts

* Update keyboards/cipulot/ec_60x/mcuconf.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>

* Fixes duplicate pid/vid for sofle_choc (qmk#24030)

* `kikoslab/kl90`: add additional layouts (qmk#24024)

* `salicylic_acid3/setta21`: fix RGB Matrix LED config (qmk#24041)

* Add Sleepy Craft Studios Sleepy Keeb Split (qmk#23844)

* `dc01/arrow`: fix layout name (qmk#24025)

* `handwired/tkk`: fix layout name (qmk#24056)

* `ash_xiix`: add additional layouts (qmk#24057)

* `kakunpc/angel64`: add additional layouts (qmk#24058)

* `kakunpc/rabbit_capture_plan`: add additional layouts (qmk#24059)

* Add support for Equinox XL (qmk#23695)

* `kbdfans/baguette66`: fix layout name (qmk#24061)

* Bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3 (qmk#24063)

Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.1 to 4.6.3.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](JamesIves/github-pages-deploy-action@v4.6.1...v4.6.3)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* `playkbtw/pk64rgb`: move RGB Matrix LED config to data driven (qmk#24062)

* [docs] Update RGBLight (Underglow) keycode names (qmk#23999)

* `handwired/swiftrax/bumblebee`: fix layout name (qmk#24064)

* [docs] Fixup home link. (qmk#24068)

* `ano`: fix layout name (qmk#24067)

* Fix enter for two ANSI layouts on the TKD Cycle7 (qmk#24070)

* [keyboard] mechwild/bbpad (qmk#24072)

* Initial bbpad commit

* refactor: bbpad

---------

Co-authored-by: Kyle McCreery <mccreery.kyle@gmail.com>

* `ash1800`: add additional layouts (qmk#24065)

* `mechlovin/olly/octagon`: move LED Matrix LED config to data driven (qmk#24069)

* `pearlboards/zeuspad`: add additional layouts (qmk#24066)

* `latinpad/latin60rgb`: move RGB Matrix LED config to data driven (qmk#24076)

* `kakunpc/rabbit_capture_plan`: update keymap layout name (qmk#24079)

`kakunpc/rabbit_capture_plan`: update keymap layout names

* `jadookb/jkb65`: move RGB Matrix LED config to data driven (qmk#24080)

* [Keyboard] Add Linx3 FAve65S (qmk#24034)

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Remove a user keymap from crkbd. (qmk#24091)

remove personal keymap

* mntre_v3: fix matrix bottom row (qmk#24077)

* `mt/mt84`: move RGB Matrix config to data driven (qmk#24090)

* `mt/mt64rgb`: move RGB Matrix config to data driven (qmk#24089)

* Adding support for IBE60 (qmk#24075)

* [Keyboard] Add boardsource/sessenta (qmk#23823)

* [CI] Add index page generator. (qmk#23737)

* [CI] Format code according to conventions (qmk#24095)

Format code according to conventions

* Add json index of files to CI uploads (qmk#24097)

* [CI] Format code according to conventions (qmk#24100)

* [CI] Pull full history before generating index (qmk#24102)

For some reason the history generation is way out.

* [CI] Remove `via` keymap builds. (qmk#24103)

* fixup CI exec flag

* Fix missing hashbang

* [CI] Disable Discord webhook when CI run is cancelled. (qmk#24104)

* Disable Discord webhook when CI run is cancelled.

* Include link to binaries in Discord output.

* `mechwild/bbpad`: fix build (qmk#24106)

* Fix typo in Keychron comments: "lcok" to "lock" (qmk#24107)

* adds veilid SAO macropad (qmk#23868)

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: c0ldbru <c0ldbrusec@gmail.com>

* Fix i2c received value in georgi and bajjak (qmk#24113)

* `ryanskidmore/rskeys100`: move RGB Matrix LED config to data driven (qmk#24114)

* Add Aums Work keyboard (qmk#23600)

* `dp60`: move RGB Matrix LED config to data driven (qmk#24022)

* Add MMkeyboard Class60 (qmk#22972)

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>

* `checkerboards/pursuit40`: adjust layout name (qmk#24118)

* `checkerboards/axon40`: adjust layout name (qmk#24119)

* Add matchstickworks normiepad (qmk#23183)

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>

* `matrix/noah`: move RGB Matrix LED config to data driven (qmk#24117)

* Skelett40 (qmk#24121)

Co-authored-by: yiancar <yiancar@gmail.com>

* Avoid path issues with `qmk flash` on Windows (qmk#24130)

* `amjkeyboard/amj60`: reduce firmware size (qmk#24139)

* `vertex/angler2`: reduce firmware size (qmk#24140)

* `clueboard/66/rev3`: reduce firmware size (qmk#24152)

* `pixelspace/capsule65i`: reduce firmware size (qmk#24150)

* `kopibeng/xt60`/`xt60_singa`: reduce firmware size (qmk#24149)

* `keychron/q2`: fix RGB Matrix config for JIS variant (qmk#24138)

* Remove incorrect use of split.main (qmk#24158)

* `handwired/tractyl_manuform/5x6_right/arduinomicro`: reduce size (qmk#24159)

* `mechlovin/delphine/rgb_led`: reduce size (qmk#24160)

* `mwstudio/mw75`: reduce size (qmk#24161)

* Fix build failures noticed in qmk#24163 CI log. (qmk#24164)

* Keycult TKL (qmk#24148)

Co-authored-by: yiancar <yiancar@gmail.com>

* `handwired/hnah108`: reduce firmware size (qmk#24168)

* `doro67/rgb`: reduce firmware size (qmk#24169)

* `rubi`: reduce firmware size (qmk#24170)

* `melgeek/mojo68/rev1`: reduce firmware size (qmk#24171)

* `kprepublic/bm40hsrgb/rev2`: reduce firmware size (qmk#24176)

* `merge/um80`: reduce firmware size (qmk#24177)

* [docs] update serial.md (qmk#24182)

capabilites -> capabilities

* `meme`: adjust layout names (qmk#24178)

* `kingly_keys/ave`: adjust layout names (qmk#24179)

* Bump actions/labeler from 4 to 5 (qmk#22608)

* Bump actions/labeler from 4 to 5

Bumps [actions/labeler](https://github.com/actions/labeler) from 4 to 5.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](actions/labeler@v4...v5)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: zvecr <git@zvecr.com>

* Update to automatic-approve-action fork (qmk#24188)

* [CLI] Only generate files if contents change. (qmk#24038)

Don't overwrite if the content doesn't change.

* Fix Reverb lockup when using GCC14 (qmk#24199)

* Remove AVR GCC version warning (qmk#24206)

* cipulot/ec_60x: Fix VIA layout options (qmk#24217)

This fixes the issue of one layout option not being applied correctly because it was out of bound.

* [Keyboard] Add archerkeyboard/desire65 (qmk#23776)

Co-authored-by: jack <0x6a73@protonmail.com>

* FX19 Support (qmk#24220)

* `handwired/p65rgb`: move RGB Matrix LED config to data driven (qmk#24124)

* `atlantis/ak81_ve`: move RGB Matrix LED config to data driven (qmk#24115)

* Add Void65h (qmk#24183)

* Add support for bunnygirl65 (qmk#24244)

* Add support for bunnygirl65

* Update keyboard.json

* Update keymap.c

* Update keymap.c

* Update keyboards/sawnsprojects/bunnygirl65/readme.md

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/sawnsprojects/bunnygirl65/keyboard.json

Co-authored-by: Joel Challis <git@zvecr.com>

* Update keyboards/sawnsprojects/bunnygirl65/keyboard.json

---------

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <jack@pngu.org>

* JJ50 v2 Support (qmk#24212)

* add support for JJ50 V2 PCB

* fix bootloader config

* update mousekey setting

* run format-json

---------

Co-authored-by: Steve Jacobs <sjacobs@truefit.io>

* Add extra compatibility to Sat75 HS PCB (qmk#24156)

* ChibiOS update script updates. (qmk#24267)

* Userspace: add support for adding environment variables during build (qmk#22887)

* Remove debugging prints. (qmk#24271)

* Fix version check in Fedora install script to be >= 39 (qmk#24281)

* Update Discord URL (qmk#24283)

* [Keyboard] Add/Update Pimoroni keybow 2040 (qmk#23986)

* [Keyboard] Add pimoroni/keybow2040

* [Keyboard] Update pimoroni/keybow2040

Co-Authored-By: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-Authored-By: Joel Challis <git@zvecr.com>
Co-Authored-By: Sandy Macdonald <1325593+sandyjmacdonald@users.noreply.github.com>

---------

Co-authored-by: Tony Finch <dot@dotat.at>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Sandy Macdonald <1325593+sandyjmacdonald@users.noreply.github.com>

* Remove like_jis keymap. (qmk#24292)

* Default STM32G431 back to wear_leveling EFL driver (qmk#24299)

* Fix auto 'keyboard' label (qmk#24221)

* Fix dead link in porting_your_keyboard_to_qmk.md (qmk#24306)

* Add Quefrency Rev. 6 (qmk#24291)

* Initial commit of Quefrency Rev. 6

* Use more memory for storing VIA layout options

* Add missing underglow LED

* Set bootmagic keys for each half, split transport matrix for RGB, update pinout for right half

* Enable encoders

* Add/update license headers

* Remove fudge thing

* Remove EEPROM leveling specification now that is the default

* Fix bootmagic position for right half

* Bump tj-actions/changed-files from 44 to 45 (qmk#24313)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44 to 45.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](tj-actions/changed-files@v44...v45)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* added planck and xd75 keymaps

* update keymap

* half keymap update

* cleanup and started numpad

* added numpad

* planck keymap update

* combine layout ideas between xd75 and planck

* keymap update

* update planck numpad

* Quick planck update

* switch volume up and down

* rename xd75 keymap

* update readme

* keymap update

* Big Keymap Update

* Added Print Screen key

* Added sofle keymap

* started keymap update

* update sofle keymap

* Update keymap ⌨️

* remove comments ⌨️

* update

* Cleanup

* Update qmk version

* Update xd75 Keymap

* Update Planck config

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: eason <98533237+EasonQian1@users.noreply.github.com>
Co-authored-by: QMK Bot <hello@qmk.fm>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: Jerome Berclaz <jerome.berclaz@a3.epfl.ch>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Alex Mayer <amayer5125@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Kim Viberti <45943577+ilkimo@users.noreply.github.com>
Co-authored-by: Syenasweta a.k.a. Nashrullah Ali Fauzi <nshrllh.l.fz@gmail.com>
Co-authored-by: Syenasweta <syenasweta@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Alabahuy <rezolutionrez@gmail.com>
Co-authored-by: 4pplet <mail@4pplet.com>
Co-authored-by: Danny <nooges@users.noreply.github.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Myriam <myriam@halfapx.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: ai03 <admin@ai03.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: David Hoelscher <infinityis@users.noreply.github.com>
Co-authored-by: lizaoreo <lizaoreo@hotmail.com>
Co-authored-by: Kevin Horvat <k@horvat.swiss>
Co-authored-by: TyraelWasTaken <96232590+TyraelWasTaken@users.noreply.github.com>
Co-authored-by: Danylo Kondratiev <knightpp@proton.me>
Co-authored-by: Cipulot <40441626+Cipulot@users.noreply.github.com>
Co-authored-by: kopibeng <52724926+kopibeng@users.noreply.github.com>
Co-authored-by: James Gzowski <flexyjerkov@gmail.com>
Co-authored-by: Guanzhong Chen <quantum2048@gmail.com>
Co-authored-by: chalex <68408520+gaclee3b@users.noreply.github.com>
Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
Co-authored-by: Ryan Neff <ryan.ray.neff@fluke.com>
Co-authored-by: Coby Sher <63015754+CobyPear@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lex Brugman <lexbrugman@users.noreply.github.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Kyle McCreery <mccreery.kyle@gmail.com>
Co-authored-by: era <73109780+eerraa@users.noreply.github.com>
Co-authored-by: tarxvf <github@tarxvf.tech>
Co-authored-by: jack <jack@pngu.org>
Co-authored-by: paradoxskin <45301314+paradoxskin@users.noreply.github.com>
Co-authored-by: c0ldbru <dennisp98@gmail.com>
Co-authored-by: c0ldbru <c0ldbrusec@gmail.com>
Co-authored-by: Yue Wu <EtaoinWu@users.noreply.github.com>
Co-authored-by: Logan Butler <8854426+MatchstickWorks@users.noreply.github.com>
Co-authored-by: yiancar <yiangosyiangou@cytanet.com.cy>
Co-authored-by: yiancar <yiancar@gmail.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: akyp <archerkeyboard2022@gmail.com>
Co-authored-by: Christian Greene <95236755+falsonix@users.noreply.github.com>
Co-authored-by: Sắn <59417802+MaiTheSan@users.noreply.github.com>
Co-authored-by: stephen776 <stephenjacobs86@gmail.com>
Co-authored-by: Steve Jacobs <sjacobs@truefit.io>
Co-authored-by: Andrew Kannan <andrew.kannan@gmail.com>
Co-authored-by: Wilfried JEANNIARD <willou.com@gmail.com>
Co-authored-by: Tony Finch <dot@dotat.at>
Co-authored-by: Sandy Macdonald <1325593+sandyjmacdonald@users.noreply.github.com>
Co-authored-by: marksard <38324387+marksard@users.noreply.github.com>
mmmveggies pushed a commit to mmmveggies/qmk_firmware that referenced this pull request Aug 28, 2024
mmmveggies pushed a commit to mmmveggies/qmk_firmware that referenced this pull request Aug 28, 2024
sigprof added a commit to sigprof/qmk_firmware that referenced this pull request Sep 13, 2024
Filters like `-f "exists(rgb_matrix.split_count")` broke after qmk#22887,
because a plain dict was used instead of the `dotty` wrapper, therefore
only keys with a single component worked.  Fix the implementation of
filtering functions to use the `dotty` wrapper properly, so that keys
with dots could be used in functions again.
sigprof added a commit to sigprof/qmk_firmware that referenced this pull request Sep 13, 2024
Add tests which should have caught the breakage from qmk#22887.
sigprof added a commit to sigprof/qmk_firmware that referenced this pull request Sep 13, 2024
Filters like `-f "exists(rgb_matrix.split_count)"` broke after qmk#22887,
because a plain dict was used instead of the `dotty` wrapper, therefore
only keys with a single component worked.  Fix the implementation of
filtering functions to use the `dotty` wrapper properly, so that keys
with dots could be used in functions again.
sigprof added a commit to sigprof/qmk_firmware that referenced this pull request Sep 13, 2024
Add tests which should have caught the breakage from qmk#22887.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting review cli qmk cli command core dd Data Driven Changes python
Projects
None yet
5 participants