From 5b94990c5aba182136519e89d38c590e105ac1bd Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 8 Dec 2025 12:11:21 +0000 Subject: [PATCH 01/23] Remove redundant URLs from `.json` (#25856) --- keyboards/aleblazer/zodiark/keyboard.json | 1 - keyboards/argo_works/ishi/80/mk0_avr/keyboard.json | 1 - keyboards/argo_works/ishi/80/mk0_avr_extra/keyboard.json | 1 - keyboards/ash_xiix/keyboard.json | 1 - keyboards/atlantis/ps17/keyboard.json | 1 - keyboards/boardrun/bizarre/keyboard.json | 1 - keyboards/boardrun/classic/keyboard.json | 1 - keyboards/checkerboards/plexus75_he/keyboard.json | 1 - keyboards/checkerboards/quark_plus/keyboard.json | 1 - keyboards/converter/periboard_512/keyboard.json | 1 - keyboards/elephant42/keyboard.json | 1 - keyboards/flxlb/zplit/keyboard.json | 1 - keyboards/frooastboard/nano/keyboard.json | 1 - keyboards/frooastboard/walnut/keyboard.json | 1 - keyboards/generic_panda/panda65_01/keyboard.json | 1 - keyboards/handwired/acacia/keyboard.json | 1 - keyboards/handwired/dactyl_manuform/4x5_5/keyboard.json | 1 - keyboards/handwired/dactyl_rah/keyboard.json | 1 - keyboards/handwired/dqz11n1g/keyboard.json | 1 - keyboards/handwired/dygma/raise/info.json | 1 - keyboards/handwired/ibm_wheelwriter/keyboard.json | 1 - keyboards/handwired/jotanck/keyboard.json | 1 - keyboards/handwired/jotlily60/keyboard.json | 1 - keyboards/handwired/oem_ansi_fullsize/keyboard.json | 1 - keyboards/handwired/oem_iso_fullsize/keyboard.json | 1 - keyboards/handwired/owlet60/keyboard.json | 1 - keyboards/handwired/twadlee/tp69/keyboard.json | 1 - keyboards/handwired/zergo/keyboard.json | 1 - keyboards/ibm/model_m/ashpil_usbc/keyboard.json | 1 - keyboards/ibm/model_m/mschwingen/info.json | 1 - keyboards/ibm/model_m/teensy2/keyboard.json | 1 - keyboards/ibm/model_m/teensypp/keyboard.json | 1 - keyboards/ibm/model_m/yugo_m/keyboard.json | 1 - keyboards/ibm/model_m_122/ibm122m/keyboard.json | 1 - keyboards/ibm/model_m_122/m122_3270/info.json | 1 - keyboards/ibm/model_m_ssk/teensypp_ssk/keyboard.json | 1 - keyboards/jacky_studio/bear_65/rev1/keyboard.json | 1 - keyboards/jacky_studio/bear_65/rev2/keyboard.json | 1 - keyboards/kbdfans/kbd19x/keyboard.json | 1 - keyboards/kegen/gboy/keyboard.json | 1 - keyboards/keycapsss/o4l_5x12/keyboard.json | 1 - keyboards/kiserdesigns/madeline/keyboard.json | 1 - keyboards/ll3ma/bongopad/keyboard.json | 1 - keyboards/manyboard/macro/keyboard.json | 1 - keyboards/nopunin10did/jabberwocky/v1/keyboard.json | 1 - keyboards/nopunin10did/jabberwocky/v2/keyboard.json | 1 - keyboards/nopunin10did/kastenwagen1840/keyboard.json | 1 - keyboards/nopunin10did/kastenwagen48/keyboard.json | 1 - keyboards/nopunin10did/railroad/rev0/keyboard.json | 1 - keyboards/nopunin10did/styrkatmel/keyboard.json | 1 - keyboards/ocean/sus/keyboard.json | 1 - keyboards/paprikman/albacore/keyboard.json | 1 - keyboards/pohjolaworks/louhi/keyboard.json | 1 - keyboards/rart/rartland/keyboard.json | 1 - keyboards/rubi/keyboard.json | 1 - keyboards/shandoncodes/flygone60/rev3/keyboard.json | 1 - keyboards/shandoncodes/mino/hotswap/keyboard.json | 1 - keyboards/swagkeys/eave/keyboard.json | 1 - keyboards/swagkeys/integral/keyboard.json | 1 - keyboards/walletburner/cajal/keyboard.json | 1 - keyboards/walletburner/neuron/keyboard.json | 1 - keyboards/wsk/gothic50/keyboard.json | 1 - keyboards/wsk/gothic70/keyboard.json | 1 - keyboards/wsk/houndstooth/keyboard.json | 1 - keyboards/wsk/jerkin/keyboard.json | 1 - keyboards/wsk/kodachi50/keyboard.json | 1 - keyboards/wsk/pain27/keyboard.json | 1 - keyboards/wsk/sl40/keyboard.json | 1 - keyboards/wsk/tkl30/keyboard.json | 1 - keyboards/xelus/akis/keyboard.json | 1 - keyboards/xelus/kangaroo/info.json | 1 - 71 files changed, 71 deletions(-) diff --git a/keyboards/aleblazer/zodiark/keyboard.json b/keyboards/aleblazer/zodiark/keyboard.json index 396e3ca4600..95821496750 100644 --- a/keyboards/aleblazer/zodiark/keyboard.json +++ b/keyboards/aleblazer/zodiark/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Zodiark", "manufacturer": "Aleblazer", - "url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark", "maintainer": "Aleblazer", "usb": { "vid": "0xF901", diff --git a/keyboards/argo_works/ishi/80/mk0_avr/keyboard.json b/keyboards/argo_works/ishi/80/mk0_avr/keyboard.json index 9717ada94fa..e767dde00cf 100644 --- a/keyboards/argo_works/ishi/80/mk0_avr/keyboard.json +++ b/keyboards/argo_works/ishi/80/mk0_avr/keyboard.json @@ -4,7 +4,6 @@ "maintainer": "jasonj2232", "development_board": "promicro", "diode_direction": "COL2ROW", - "url": "https://qmk.fm/keyboards/", "usb": { "device_version": "0.0.1", "pid": "0x4930", diff --git a/keyboards/argo_works/ishi/80/mk0_avr_extra/keyboard.json b/keyboards/argo_works/ishi/80/mk0_avr_extra/keyboard.json index 54a5b72d5a3..7639817a32f 100644 --- a/keyboards/argo_works/ishi/80/mk0_avr_extra/keyboard.json +++ b/keyboards/argo_works/ishi/80/mk0_avr_extra/keyboard.json @@ -5,7 +5,6 @@ "development_board": "elite_c", "pin_compatible": "elite_c", "diode_direction": "COL2ROW", - "url": "https://qmk.fm/keyboards/", "usb": { "device_version": "0.0.1", "pid": "0x4930", diff --git a/keyboards/ash_xiix/keyboard.json b/keyboards/ash_xiix/keyboard.json index c1ba811d32a..6ff547f2cf8 100644 --- a/keyboards/ash_xiix/keyboard.json +++ b/keyboards/ash_xiix/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "XIIX", "manufacturer": "ASH", - "url": "config.qmk.fm", "maintainer": "qmk", "usb": { "vid": "0xFEED", diff --git a/keyboards/atlantis/ps17/keyboard.json b/keyboards/atlantis/ps17/keyboard.json index 3c7f50be0b6..9d0a9ca8efe 100644 --- a/keyboards/atlantis/ps17/keyboard.json +++ b/keyboards/atlantis/ps17/keyboard.json @@ -2,7 +2,6 @@ "manufacturer": "Atlantis", "keyboard_name": "PS17", "maintainer": "mjbogusz", - "url": "https://qmk.fm/keyboards/", "processor": "atmega32u4", "bootloader": "atmel-dfu", "bootloader_instructions": "To reset the board into bootloader mode, tap the Reset switch mounted on the bottom of the PCB.", diff --git a/keyboards/boardrun/bizarre/keyboard.json b/keyboards/boardrun/bizarre/keyboard.json index 22ddfb005d6..230ce46142b 100644 --- a/keyboards/boardrun/bizarre/keyboard.json +++ b/keyboards/boardrun/bizarre/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Boardrun Bizarre", "manufacturer": "shensmobile", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/bizarre", "maintainer": "QMK Community", "debounce": 10, "usb": { diff --git a/keyboards/boardrun/classic/keyboard.json b/keyboards/boardrun/classic/keyboard.json index bdddee8067f..87af448345e 100644 --- a/keyboards/boardrun/classic/keyboard.json +++ b/keyboards/boardrun/classic/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Boardrun Classic", "manufacturer": "shensmobile", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/classic", "maintainer": "QMK Community", "debounce": 10, "usb": { diff --git a/keyboards/checkerboards/plexus75_he/keyboard.json b/keyboards/checkerboards/plexus75_he/keyboard.json index 55a7a492358..03ac45a92b9 100644 --- a/keyboards/checkerboards/plexus75_he/keyboard.json +++ b/keyboards/checkerboards/plexus75_he/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Plexus75 HE", "manufacturer": "Nasp", - "url": "https://www.github.com/qmk/qmk_firmware/tree/master/keyboards/checkerboards/plexus75_he", "maintainer": "nasp", "usb": { "vid": "0x7070", diff --git a/keyboards/checkerboards/quark_plus/keyboard.json b/keyboards/checkerboards/quark_plus/keyboard.json index 6f38cbb7527..932eb97e4a3 100644 --- a/keyboards/checkerboards/quark_plus/keyboard.json +++ b/keyboards/checkerboards/quark_plus/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Quark Plus", "manufacturer": "Nasp", - "url": "https://www.github.com/qmk/qmk_firmware/tree/master/keyboards/checkerboards/quark_plus", "maintainer": "nasp", "usb": { "vid": "0x7070", diff --git a/keyboards/converter/periboard_512/keyboard.json b/keyboards/converter/periboard_512/keyboard.json index b3359314931..64055efbc5c 100644 --- a/keyboards/converter/periboard_512/keyboard.json +++ b/keyboards/converter/periboard_512/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Periboard 512", "manufacturer": "Sife", - "url": "https://github.com/Sife-ops/qmk_firmware/tree/periboard_512/keyboards/converter/periboard_512", "maintainer": "Sife-ops", "usb": { "vid": "0xFEED", diff --git a/keyboards/elephant42/keyboard.json b/keyboards/elephant42/keyboard.json index be0f1c81a01..5911fcbab84 100644 --- a/keyboards/elephant42/keyboard.json +++ b/keyboards/elephant42/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "elephant42", "manufacturer": "illness072", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/elephant42", "maintainer": "illness072", "usb": { "vid": "0x4649", diff --git a/keyboards/flxlb/zplit/keyboard.json b/keyboards/flxlb/zplit/keyboard.json index fdbe34fc7eb..07bdfe7a57f 100644 --- a/keyboards/flxlb/zplit/keyboard.json +++ b/keyboards/flxlb/zplit/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "zplit", "manufacturer": "fluxlab", - "url": "https://github.com/cccywj/qmk_firmware", "maintainer": "flxlb", "usb": { "vid": "0x7076", diff --git a/keyboards/frooastboard/nano/keyboard.json b/keyboards/frooastboard/nano/keyboard.json index 45e3dc75d66..224699d121e 100644 --- a/keyboards/frooastboard/nano/keyboard.json +++ b/keyboards/frooastboard/nano/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Frooastboard Nano", "manufacturer": "frooastside", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/frooastboard/nano", "maintainer": "frooastside", "diode_direction": "COL2ROW", "layouts": { diff --git a/keyboards/frooastboard/walnut/keyboard.json b/keyboards/frooastboard/walnut/keyboard.json index 923a0e97dea..174adcc7db2 100644 --- a/keyboards/frooastboard/walnut/keyboard.json +++ b/keyboards/frooastboard/walnut/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Frooastboard Walnut", "manufacturer": "Frooastside", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/frooastboard/walnut", "maintainer": "Frooastside", "diode_direction": "COL2ROW", "processor": "atmega32u4", diff --git a/keyboards/generic_panda/panda65_01/keyboard.json b/keyboards/generic_panda/panda65_01/keyboard.json index 1ba0ec134ba..a83b704f7fd 100644 --- a/keyboards/generic_panda/panda65_01/keyboard.json +++ b/keyboards/generic_panda/panda65_01/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Panda65_01", "manufacturer": "generic_panda", - "url": "https://github.com/JesseLeung97/qmk_firmware/tree/master/keyboards/generic_panda/panda65_01", "maintainer": "generic_panda", "usb": { "vid": "0x6770", diff --git a/keyboards/handwired/acacia/keyboard.json b/keyboards/handwired/acacia/keyboard.json index 16f614d7959..17246e52ec7 100644 --- a/keyboards/handwired/acacia/keyboard.json +++ b/keyboards/handwired/acacia/keyboard.json @@ -2,7 +2,6 @@ "keyboard_name": "Acacia", "manufacturer": "jpsecher", "maintainer": "jpsecher", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/acacia", "processor": "atmega32u2", "bootloader": "atmel-dfu", "bootloader_instructions": "Enter the bootloader by using the small buttons on the PCB: press the RESET button while connected to QMK Toolbox.", diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/keyboard.json b/keyboards/handwired/dactyl_manuform/4x5_5/keyboard.json index 207f8c06a7c..c6a790d14df 100644 --- a/keyboards/handwired/dactyl_manuform/4x5_5/keyboard.json +++ b/keyboards/handwired/dactyl_manuform/4x5_5/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Dactyl ManuForm 4x5_5", "manufacturer": "ssedrick", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/dactyl_manuform/4x5_5", "maintainer": "ssedrick", "usb": { "vid": "0x444D", diff --git a/keyboards/handwired/dactyl_rah/keyboard.json b/keyboards/handwired/dactyl_rah/keyboard.json index 2cb7741cc7d..69d982ee6be 100644 --- a/keyboards/handwired/dactyl_rah/keyboard.json +++ b/keyboards/handwired/dactyl_rah/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Dactyl RAH", "manufacturer": "ralphie02", - "url": "https://qmk.fm/keyboards/", "maintainer": "ralphie02", "usb": { "vid": "0xFEED", diff --git a/keyboards/handwired/dqz11n1g/keyboard.json b/keyboards/handwired/dqz11n1g/keyboard.json index 4e45a5a920c..d28df5c6695 100644 --- a/keyboards/handwired/dqz11n1g/keyboard.json +++ b/keyboards/handwired/dqz11n1g/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "DQz11N1G", "manufacturer": "Unknown", - "url": "https://github.com/dvdkhlng/qmk_firmware_dqz11n1g", "maintainer": "dvdkhlng", "usb": { "vid": "0xFEED", diff --git a/keyboards/handwired/dygma/raise/info.json b/keyboards/handwired/dygma/raise/info.json index be32abfb94c..56058c31f5c 100644 --- a/keyboards/handwired/dygma/raise/info.json +++ b/keyboards/handwired/dygma/raise/info.json @@ -1,7 +1,6 @@ { "keyboard_name": "Raise", "manufacturer": "Dygma", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise", "maintainer": "ibash", "usb": { "vid": "0x1209", diff --git a/keyboards/handwired/ibm_wheelwriter/keyboard.json b/keyboards/handwired/ibm_wheelwriter/keyboard.json index 91f56540e2a..8dfb3fc403b 100644 --- a/keyboards/handwired/ibm_wheelwriter/keyboard.json +++ b/keyboards/handwired/ibm_wheelwriter/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "6715 Wheelwriter", "manufacturer": "IBM", - "url": "https://github.com/andresteare/qmk_firmware", "maintainer": "andresteare", "usb": { "vid": "0x8767", diff --git a/keyboards/handwired/jotanck/keyboard.json b/keyboards/handwired/jotanck/keyboard.json index bddcce9fa59..028ef31c497 100644 --- a/keyboards/handwired/jotanck/keyboard.json +++ b/keyboards/handwired/jotanck/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Jotanck", "manufacturer": "Jotix", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/jotanck", "maintainer": "jotix", "usb": { "vid": "0x4A4F", diff --git a/keyboards/handwired/jotlily60/keyboard.json b/keyboards/handwired/jotlily60/keyboard.json index fd072d83db5..2d658dac0e0 100644 --- a/keyboards/handwired/jotlily60/keyboard.json +++ b/keyboards/handwired/jotlily60/keyboard.json @@ -2,7 +2,6 @@ "manufacturer": "Jotix", "keyboard_name": "jotlily60", "maintainer" : "jotix", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/jotlily60", "usb": { "vid": "0x4A4F", "pid": "0x2332", diff --git a/keyboards/handwired/oem_ansi_fullsize/keyboard.json b/keyboards/handwired/oem_ansi_fullsize/keyboard.json index 3c3ebb2646b..c72444cc61e 100644 --- a/keyboards/handwired/oem_ansi_fullsize/keyboard.json +++ b/keyboards/handwired/oem_ansi_fullsize/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "oem_ansi_fullsize", "manufacturer": "Cian Johnston", - "url": "https://github.com/johnstcn/qmk", "maintainer": "johnstcn", "usb": { "vid": "0xFEED", diff --git a/keyboards/handwired/oem_iso_fullsize/keyboard.json b/keyboards/handwired/oem_iso_fullsize/keyboard.json index dcff4541f1e..c31c8e917c7 100644 --- a/keyboards/handwired/oem_iso_fullsize/keyboard.json +++ b/keyboards/handwired/oem_iso_fullsize/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "teclado_oscar", "manufacturer": "Gamdias", - "url": "https://github.com/andresteare/qmk_firmware", "maintainer": "andresteare", "usb": { "vid": "0x9856", diff --git a/keyboards/handwired/owlet60/keyboard.json b/keyboards/handwired/owlet60/keyboard.json index fad204e6fa6..33b4e1bbae4 100644 --- a/keyboards/handwired/owlet60/keyboard.json +++ b/keyboards/handwired/owlet60/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Owlet60", "manufacturer": "worthlessowl", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/owlet60/", "maintainer": "worthlessowl", "usb": { "vid": "0xFEED", diff --git a/keyboards/handwired/twadlee/tp69/keyboard.json b/keyboards/handwired/twadlee/tp69/keyboard.json index 833aa8bdf85..91b162233ed 100644 --- a/keyboards/handwired/twadlee/tp69/keyboard.json +++ b/keyboards/handwired/twadlee/tp69/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "TP69", "manufacturer": "Tracy Wadleigh", - "url": "https://github.com/twadleigh/qmk_firmware", "maintainer": "qmk", "usb": { "vid": "0xBEEF", diff --git a/keyboards/handwired/zergo/keyboard.json b/keyboards/handwired/zergo/keyboard.json index 44bd80c0cdb..59ee3ec6361 100644 --- a/keyboards/handwired/zergo/keyboard.json +++ b/keyboards/handwired/zergo/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "zErgo", "manufacturer": "GreenJack", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/zergo", "maintainer": "greenjack", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m/ashpil_usbc/keyboard.json b/keyboards/ibm/model_m/ashpil_usbc/keyboard.json index 3bf1069fd1a..3dc35aa22ad 100644 --- a/keyboards/ibm/model_m/ashpil_usbc/keyboard.json +++ b/keyboards/ibm/model_m/ashpil_usbc/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "IBM Model M 101/102", "manufacturer": "ashpil", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/ashpil_usbc", "maintainer": "ashpil", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m/mschwingen/info.json b/keyboards/ibm/model_m/mschwingen/info.json index 0deb57ed038..27b3ff5381f 100644 --- a/keyboards/ibm/model_m/mschwingen/info.json +++ b/keyboards/ibm/model_m/mschwingen/info.json @@ -1,7 +1,6 @@ { "keyboard_name": "atmega32U4 board for IBM Model M", "manufacturer": "mschwingen", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/mschwingen", "maintainer": "mschwingen", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m/teensy2/keyboard.json b/keyboards/ibm/model_m/teensy2/keyboard.json index fac1d42ebeb..62be457462b 100644 --- a/keyboards/ibm/model_m/teensy2/keyboard.json +++ b/keyboards/ibm/model_m/teensy2/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "IBM Model M 101/102", "manufacturer": "wangfuco", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/teensy2", "maintainer": "wangfuco", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m/teensypp/keyboard.json b/keyboards/ibm/model_m/teensypp/keyboard.json index e77c43483b0..5166cda0735 100644 --- a/keyboards/ibm/model_m/teensypp/keyboard.json +++ b/keyboards/ibm/model_m/teensypp/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "IBM Model M 101/102", "manufacturer": "iw0rm3r", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/teensypp", "maintainer": "iw0rm3r", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m/yugo_m/keyboard.json b/keyboards/ibm/model_m/yugo_m/keyboard.json index aee2f9720a7..f4b32821028 100644 --- a/keyboards/ibm/model_m/yugo_m/keyboard.json +++ b/keyboards/ibm/model_m/yugo_m/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Yugo-M (IBM Model M replacment controller)", "manufacturer": "IBM", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m/yugo_m", "maintainer": "Nidzo Tomic", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m_122/ibm122m/keyboard.json b/keyboards/ibm/model_m_122/ibm122m/keyboard.json index a9e10ffd6a5..23bfbf2c6ab 100644 --- a/keyboards/ibm/model_m_122/ibm122m/keyboard.json +++ b/keyboards/ibm/model_m_122/ibm122m/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "IBM Model M 122 key", "manufacturer": "IBM", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_122/ibm122m", "maintainer": "qmk", "usb": { "vid": "0xFEED", diff --git a/keyboards/ibm/model_m_122/m122_3270/info.json b/keyboards/ibm/model_m_122/m122_3270/info.json index 9b7a78c7f71..364ab250dcc 100644 --- a/keyboards/ibm/model_m_122/m122_3270/info.json +++ b/keyboards/ibm/model_m_122/m122_3270/info.json @@ -1,7 +1,6 @@ { "keyboard_name": "Model M PC/3270 122 key", "manufacturer": "IBM", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_122/m122_3270", "maintainer": "jmaynard", "usb": { "vid": "0x1209", diff --git a/keyboards/ibm/model_m_ssk/teensypp_ssk/keyboard.json b/keyboards/ibm/model_m_ssk/teensypp_ssk/keyboard.json index 50ce4031309..06ce761651c 100644 --- a/keyboards/ibm/model_m_ssk/teensypp_ssk/keyboard.json +++ b/keyboards/ibm/model_m_ssk/teensypp_ssk/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "IBM Model M Space-Saving Keyboard", "manufacturer": "tiltowait", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ibm/model_m_ssk/teensypp_ssk", "maintainer": "tiltowait", "usb": { "vid": "0xFEED", diff --git a/keyboards/jacky_studio/bear_65/rev1/keyboard.json b/keyboards/jacky_studio/bear_65/rev1/keyboard.json index df7be71869a..3181635e034 100644 --- a/keyboards/jacky_studio/bear_65/rev1/keyboard.json +++ b/keyboards/jacky_studio/bear_65/rev1/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Bear 65", "manufacturer": "Jacky", - "url": "https://qmk.fm/keyboards", "maintainer": "qmk", "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/jacky_studio/bear_65/rev2/keyboard.json b/keyboards/jacky_studio/bear_65/rev2/keyboard.json index 0fa471d44a4..bfc31bb1a53 100644 --- a/keyboards/jacky_studio/bear_65/rev2/keyboard.json +++ b/keyboards/jacky_studio/bear_65/rev2/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Bear65 V2", "manufacturer": "Jacky", - "url": "https://qmk.fm/keyboards", "maintainer": "qmk", "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/kbdfans/kbd19x/keyboard.json b/keyboards/kbdfans/kbd19x/keyboard.json index b5f46730604..8834b78d873 100644 --- a/keyboards/kbdfans/kbd19x/keyboard.json +++ b/keyboards/kbdfans/kbd19x/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "KBD19x", "manufacturer": "KBDfans", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd19x", "maintainer": "jshuf, mechmerlin", "usb": { "vid": "0x4B42", diff --git a/keyboards/kegen/gboy/keyboard.json b/keyboards/kegen/gboy/keyboard.json index a39316328fa..1485a7b59d6 100644 --- a/keyboards/kegen/gboy/keyboard.json +++ b/keyboards/kegen/gboy/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "G-Boy", "manufacturer": "Kegen", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kegen/gboy", "maintainer": "mattchan", "usb": { "vid": "0x4B65", diff --git a/keyboards/keycapsss/o4l_5x12/keyboard.json b/keyboards/keycapsss/o4l_5x12/keyboard.json index 7425dc7a0b5..1a213aa2986 100644 --- a/keyboards/keycapsss/o4l_5x12/keyboard.json +++ b/keyboards/keycapsss/o4l_5x12/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "O4L:5x12", "manufacturer": "Keycapsss", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/keycapsss/o4l_5x12", "maintainer": "BenRoe", "usb": { "vid": "0x7983", diff --git a/keyboards/kiserdesigns/madeline/keyboard.json b/keyboards/kiserdesigns/madeline/keyboard.json index 5fdcd981f18..bdc3ddc9c91 100644 --- a/keyboards/kiserdesigns/madeline/keyboard.json +++ b/keyboards/kiserdesigns/madeline/keyboard.json @@ -28,7 +28,6 @@ "resync": true } }, - "url": "https://qmk.fm/keyboards", "usb": { "device_version": "0.0.1", "pid": "0x6D64", diff --git a/keyboards/ll3ma/bongopad/keyboard.json b/keyboards/ll3ma/bongopad/keyboard.json index c3abc03fc97..9fba0917bb1 100644 --- a/keyboards/ll3ma/bongopad/keyboard.json +++ b/keyboards/ll3ma/bongopad/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "BongoPad", "manufacturer": "Ll3ma", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3ma/bongopad", "maintainer": "Ll3ma", "usb": { "vid": "0x3728", diff --git a/keyboards/manyboard/macro/keyboard.json b/keyboards/manyboard/macro/keyboard.json index d0c278b7810..3b99221b784 100644 --- a/keyboards/manyboard/macro/keyboard.json +++ b/keyboards/manyboard/macro/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "MB_Macro", "manufacturer": "Manyboard", - "url": "https://github.com/WillEhman/qmk_firmware/tree/dev_create_mb_macro", "maintainer": "William Ehman", "usb": { "vid": "0x4D42", diff --git a/keyboards/nopunin10did/jabberwocky/v1/keyboard.json b/keyboards/nopunin10did/jabberwocky/v1/keyboard.json index 25f7f7a5335..120fdc3e76e 100644 --- a/keyboards/nopunin10did/jabberwocky/v1/keyboard.json +++ b/keyboards/nopunin10did/jabberwocky/v1/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Jabberwocky", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/jabberwocky/v1", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/nopunin10did/jabberwocky/v2/keyboard.json b/keyboards/nopunin10did/jabberwocky/v2/keyboard.json index 784732a54a3..dd22ce3d3b7 100644 --- a/keyboards/nopunin10did/jabberwocky/v2/keyboard.json +++ b/keyboards/nopunin10did/jabberwocky/v2/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Jabberwocky", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/jabberwocky/v2", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/nopunin10did/kastenwagen1840/keyboard.json b/keyboards/nopunin10did/kastenwagen1840/keyboard.json index 7dea20455c4..2e24077111f 100644 --- a/keyboards/nopunin10did/kastenwagen1840/keyboard.json +++ b/keyboards/nopunin10did/kastenwagen1840/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Kastenwagen 1840", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen1840", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/nopunin10did/kastenwagen48/keyboard.json b/keyboards/nopunin10did/kastenwagen48/keyboard.json index 0132d0fa613..82ce186b92a 100644 --- a/keyboards/nopunin10did/kastenwagen48/keyboard.json +++ b/keyboards/nopunin10did/kastenwagen48/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Kastenwagen 48", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/nopunin10did/railroad/rev0/keyboard.json b/keyboards/nopunin10did/railroad/rev0/keyboard.json index 92c878c5711..695a5e05f37 100644 --- a/keyboards/nopunin10did/railroad/rev0/keyboard.json +++ b/keyboards/nopunin10did/railroad/rev0/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "The Railroad", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/railroad", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/nopunin10did/styrkatmel/keyboard.json b/keyboards/nopunin10did/styrkatmel/keyboard.json index 033357d8f21..5b4f7fa3f4a 100644 --- a/keyboards/nopunin10did/styrkatmel/keyboard.json +++ b/keyboards/nopunin10did/styrkatmel/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Styrka Atmel", "manufacturer": "NoPunIn10Did", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/styrkatmel", "maintainer": "NoPunIn10Did", "usb": { "vid": "0x4E50", diff --git a/keyboards/ocean/sus/keyboard.json b/keyboards/ocean/sus/keyboard.json index ebbb2470352..aca9350a961 100644 --- a/keyboards/ocean/sus/keyboard.json +++ b/keyboards/ocean/sus/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Sus", "manufacturer": "Ocean", - "url": " ", "maintainer": "Ocean", "usb": { "vid": "0x9624", diff --git a/keyboards/paprikman/albacore/keyboard.json b/keyboards/paprikman/albacore/keyboard.json index a2005221c3e..13862f43541 100644 --- a/keyboards/paprikman/albacore/keyboard.json +++ b/keyboards/paprikman/albacore/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Albacore", "manufacturer": "paprikman", - "url": "https://github.com/paprikman/qmk_firmware/tree/master/keyboards/paprikman/albacore", "maintainer": "paprikman", "usb": { "vid": "0x736D", diff --git a/keyboards/pohjolaworks/louhi/keyboard.json b/keyboards/pohjolaworks/louhi/keyboard.json index be003686327..e4fe50a3984 100644 --- a/keyboards/pohjolaworks/louhi/keyboard.json +++ b/keyboards/pohjolaworks/louhi/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Louhi", "manufacturer": "Pohjola Works", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/pohjolaworks/louhi", "maintainer": "ErkHal", "usb": { "vid": "0x5057", diff --git a/keyboards/rart/rartland/keyboard.json b/keyboards/rart/rartland/keyboard.json index 158cbb86398..d5aaf59da7e 100644 --- a/keyboards/rart/rartland/keyboard.json +++ b/keyboards/rart/rartland/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "RARTLAND", "manufacturer": "Alabahuy", - "url": " ", "maintainer": "Alabahuy", "usb": { "vid": "0x414C", diff --git a/keyboards/rubi/keyboard.json b/keyboards/rubi/keyboard.json index bdef35fc775..8763052204f 100644 --- a/keyboards/rubi/keyboard.json +++ b/keyboards/rubi/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Rubi", "manufacturer": "gregorio", - "url": "https://github.com/ohchiko/qmk_firmware/tree/master/keyboards/rubi", "maintainer": "gregorio", "usb": { "vid": "0x4752", diff --git a/keyboards/shandoncodes/flygone60/rev3/keyboard.json b/keyboards/shandoncodes/flygone60/rev3/keyboard.json index 4b839636484..2825e69f21c 100644 --- a/keyboards/shandoncodes/flygone60/rev3/keyboard.json +++ b/keyboards/shandoncodes/flygone60/rev3/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Flygone60 Rev3", "manufacturer": "ShandonCodes", - "url": "https://qmk.fm/keyboards/", "maintainer": "ShandonCodes", "usb": { "vid": "0x7877", diff --git a/keyboards/shandoncodes/mino/hotswap/keyboard.json b/keyboards/shandoncodes/mino/hotswap/keyboard.json index d9f460b3912..33ef128a83c 100644 --- a/keyboards/shandoncodes/mino/hotswap/keyboard.json +++ b/keyboards/shandoncodes/mino/hotswap/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Mino", "manufacturer": "ShandonCodes", - "url": "https://qmk.fm/keyboards/", "maintainer": "ShandonCodes", "usb": { "vid": "0x7877", diff --git a/keyboards/swagkeys/eave/keyboard.json b/keyboards/swagkeys/eave/keyboard.json index 87945ed756c..8fbd9b249f4 100644 --- a/keyboards/swagkeys/eave/keyboard.json +++ b/keyboards/swagkeys/eave/keyboard.json @@ -41,7 +41,6 @@ "saturation_steps": 8, "sleep": true }, - "url": "NONE", "usb": { "device_version": "1.0.0", "pid": "0x4A16", diff --git a/keyboards/swagkeys/integral/keyboard.json b/keyboards/swagkeys/integral/keyboard.json index 3d496711005..a939c26592d 100644 --- a/keyboards/swagkeys/integral/keyboard.json +++ b/keyboards/swagkeys/integral/keyboard.json @@ -20,7 +20,6 @@ "rows": ["B9", "C13", "B12", "B11", "B10"] }, "processor": "STM32F103", - "url": "NONE", "usb": { "device_version": "1.0.0", "pid": "0x4F21", diff --git a/keyboards/walletburner/cajal/keyboard.json b/keyboards/walletburner/cajal/keyboard.json index 03fb89b23e5..07b4a3146f5 100644 --- a/keyboards/walletburner/cajal/keyboard.json +++ b/keyboards/walletburner/cajal/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Cajal", "manufacturer": "Walletburner", - "url": "https://qmk.fm/keyboards/", "maintainer": "worldspawn00", "usb": { "vid": "0x5742", diff --git a/keyboards/walletburner/neuron/keyboard.json b/keyboards/walletburner/neuron/keyboard.json index d353b0b6236..9dc2616f7a1 100644 --- a/keyboards/walletburner/neuron/keyboard.json +++ b/keyboards/walletburner/neuron/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Neuron", "manufacturer": "Walletburner", - "url": "https://qmk.fm/keyboards/", "maintainer": "worldspawn00", "usb": { "vid": "0x5742", diff --git a/keyboards/wsk/gothic50/keyboard.json b/keyboards/wsk/gothic50/keyboard.json index ecd87d9e816..0e49872b102 100644 --- a/keyboards/wsk/gothic50/keyboard.json +++ b/keyboards/wsk/gothic50/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Gothic50", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/gothic70/keyboard.json b/keyboards/wsk/gothic70/keyboard.json index 15acd70287a..1c3f54d585e 100644 --- a/keyboards/wsk/gothic70/keyboard.json +++ b/keyboards/wsk/gothic70/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Gothic70", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0x5753", diff --git a/keyboards/wsk/houndstooth/keyboard.json b/keyboards/wsk/houndstooth/keyboard.json index d7596b151a8..1e6e5b36e26 100644 --- a/keyboards/wsk/houndstooth/keyboard.json +++ b/keyboards/wsk/houndstooth/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Houndstooth", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/jerkin/keyboard.json b/keyboards/wsk/jerkin/keyboard.json index 4ff9701f6eb..dfd3a6d314f 100644 --- a/keyboards/wsk/jerkin/keyboard.json +++ b/keyboards/wsk/jerkin/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Jerkin", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/kodachi50/keyboard.json b/keyboards/wsk/kodachi50/keyboard.json index d37eb965e22..373a1770fb5 100644 --- a/keyboards/wsk/kodachi50/keyboard.json +++ b/keyboards/wsk/kodachi50/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "Kodachi50", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/pain27/keyboard.json b/keyboards/wsk/pain27/keyboard.json index 43a9ce5f592..0a88b751dc6 100644 --- a/keyboards/wsk/pain27/keyboard.json +++ b/keyboards/wsk/pain27/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "PAIN27", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/sl40/keyboard.json b/keyboards/wsk/sl40/keyboard.json index 9c6752b98c3..9d92cad7c34 100644 --- a/keyboards/wsk/sl40/keyboard.json +++ b/keyboards/wsk/sl40/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "SL40", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/wsk/tkl30/keyboard.json b/keyboards/wsk/tkl30/keyboard.json index 4a767c1da8e..21f4c15545b 100644 --- a/keyboards/wsk/tkl30/keyboard.json +++ b/keyboards/wsk/tkl30/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "TKL30", "manufacturer": "Worldspawn00", - "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", "usb": { "vid": "0xFEED", diff --git a/keyboards/xelus/akis/keyboard.json b/keyboards/xelus/akis/keyboard.json index 25b4f958d76..0aa4d177cb0 100644 --- a/keyboards/xelus/akis/keyboard.json +++ b/keyboards/xelus/akis/keyboard.json @@ -1,7 +1,6 @@ { "keyboard_name": "AkiS", "manufacturer": "Xelus", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/akis", "maintainer": "Xelus22", "usb": { "vid": "0x5845", diff --git a/keyboards/xelus/kangaroo/info.json b/keyboards/xelus/kangaroo/info.json index 791aa75cf76..fb7858dd3b9 100644 --- a/keyboards/xelus/kangaroo/info.json +++ b/keyboards/xelus/kangaroo/info.json @@ -1,6 +1,5 @@ { "manufacturer": "Xelus", - "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/kangaroo", "maintainer": "qmk", "usb": { "vid": "0x5845", From 57b284dfa999aedfc7cea1db864e6daea8d9dc92 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 8 Dec 2025 19:55:06 +0000 Subject: [PATCH 02/23] Refactor Makefile logic for locating keymaps (#25808) --- Makefile | 34 +---------------- builddefs/build_json.mk | 36 ------------------ builddefs/build_keyboard.mk | 74 +------------------------------------ builddefs/build_layout.mk | 36 ------------------ builddefs/locate_keymap.mk | 64 ++++++++++++++++++++++++++++++++ 5 files changed, 67 insertions(+), 177 deletions(-) delete mode 100644 builddefs/build_json.mk delete mode 100644 builddefs/build_layout.mk create mode 100644 builddefs/locate_keymap.mk diff --git a/Makefile b/Makefile index 5bb4f0d8eb3..62c3d3c2843 100644 --- a/Makefile +++ b/Makefile @@ -190,41 +190,9 @@ endef # Parses a rule in the format : # the keyboard is already known when entering this function define PARSE_KEYBOARD - # If we want to compile the default subproject, then we need to - # include the correct makefile to determine the actual name of it CURRENT_KB := $1 - # 5/4/3/2/1 - KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB) - KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1))) - KEYBOARD_FOLDER_PATH_3 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_2))) - KEYBOARD_FOLDER_PATH_4 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_3))) - KEYBOARD_FOLDER_PATH_5 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_4))) - - KEYMAPS := - # get a list of all keymaps - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.))) - - ifneq ($(QMK_USERSPACE),) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.))) - KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.))) - endif - - KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1) - LAYOUT_KEYMAPS := - $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.))))) - ifneq ($(QMK_USERSPACE),) - $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/layouts/$$(LAYOUT)/*/.))))) - endif - - KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS)) + KEYMAPS := $(shell $(QMK_BIN) list-keymaps --keyboard $1) # if the rule after removing the start of it is empty (we haven't specified a kemap or target) # compile all the keymaps diff --git a/builddefs/build_json.mk b/builddefs/build_json.mk deleted file mode 100644 index 54f256480b4..00000000000 --- a/builddefs/build_json.mk +++ /dev/null @@ -1,36 +0,0 @@ -# Look for a json keymap file -ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","") - KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json - KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_5) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","") - KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json - KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_4) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","") - KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json - KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_3) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","") - KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json - KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_2) -else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","") - KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json - KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_1) -endif - -ifneq ($(QMK_USERSPACE),) - ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json)","") - KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json - KEYMAP_JSON_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json)","") - KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json - KEYMAP_JSON_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json)","") - KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json - KEYMAP_JSON_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json)","") - KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json - KEYMAP_JSON_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json)","") - KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json - KEYMAP_JSON_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1) - endif -endif diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index 0df95342f93..aa527f79b5e 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -138,75 +138,12 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","") DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json endif -MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) -MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) -MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) -MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) -MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) - # Pull in rules from DD keyboard config INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_rules.mk) include $(INFO_RULES_MK) -# Check for keymap.json first, so we can regenerate keymap.c -include $(BUILDDEFS_PATH)/build_json.mk - -# Pull in keymap level rules.mk -ifeq ("$(wildcard $(KEYMAP_PATH))", "") - # Look through the possible keymap folders until we find a matching keymap.c - ifneq ($(QMK_USERSPACE),) - ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c)","") - -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/rules.mk - KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c - KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c)","") - -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/rules.mk - KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c - KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c)","") - -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/rules.mk - KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c - KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c)","") - -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/rules.mk - KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c - KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4) - else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c)","") - -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/rules.mk - KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c - KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5) - endif - endif - ifeq ($(KEYMAP_PATH),) - ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_1)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_2)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_3)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_4)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_5)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) - else ifneq ($(LAYOUTS),) - # If we haven't found a keymap yet fall back to community layouts - include $(BUILDDEFS_PATH)/build_layout.mk - else ifeq ("$(wildcard $(KEYMAP_JSON_PATH))", "") # Not finding keymap.c is fine if we found a keymap.json - $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap) - # this state should never be reached - endif - endif -endif +include $(BUILDDEFS_PATH)/locate_keymap.mk +-include $(KEYMAP_PATH)/rules.mk # Have we found a keymap.json? ifneq ("$(wildcard $(KEYMAP_JSON))", "") @@ -217,16 +154,9 @@ ifneq ("$(wildcard $(KEYMAP_JSON))", "") OPT_DEFS += -DOTHER_KEYMAP_C=\"$(OTHER_KEYMAP_C)\" endif - KEYMAP_PATH := $(KEYMAP_JSON_PATH) - KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h - ifeq ($(OTHER_KEYMAP_C),) - # Load the keymap-level rules.mk if exists (and we havent already loaded it for keymap.c) - -include $(KEYMAP_PATH)/rules.mk - endif - # Load any rules.mk content from keymap.json INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/rules.mk $(KEYMAP_JSON)) include $(INFO_RULES_MK) diff --git a/builddefs/build_layout.mk b/builddefs/build_layout.mk deleted file mode 100644 index 7a5dbf58b64..00000000000 --- a/builddefs/build_layout.mk +++ /dev/null @@ -1,36 +0,0 @@ -LAYOUTS_PATH := layouts -LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/)))) - -ifneq ($(QMK_USERSPACE),) - LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH)) -endif - -define SEARCH_LAYOUTS_REPO - LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP) - LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json - LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c - ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","") - KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON) - KEYMAP_JSON_PATH := $$(LAYOUT_KEYMAP_PATH) - endif - ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","") - -include $$(LAYOUT_KEYMAP_PATH)/rules.mk - KEYMAP_C := $$(LAYOUT_KEYMAP_C) - KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH) - endif -endef - -define SEARCH_LAYOUTS - $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO))) -endef - -ifneq ($(FORCE_LAYOUT),) - ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS))) - $(info Forcing layout: $(FORCE_LAYOUT)) - LAYOUTS := $(FORCE_LAYOUT) - else - $(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist) - endif -endif - -$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS))) diff --git a/builddefs/locate_keymap.mk b/builddefs/locate_keymap.mk new file mode 100644 index 00000000000..3e95424a6c1 --- /dev/null +++ b/builddefs/locate_keymap.mk @@ -0,0 +1,64 @@ +MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) +MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) +MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) +MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) +MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) + +POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_1) +POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_2) +POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_3) +POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_4) +POTENTIAL_KEYMAP_PATHS += $(MAIN_KEYMAP_PATH_5) + +ifneq ($(QMK_USERSPACE),) + POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1) + POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2) + POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3) + POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4) + POTENTIAL_KEYMAP_PATHS += $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5) +endif + +define SEARCH_POTENTIAL_LOCATION + POTENTIAL_DIR := $1 + ifeq ("$$(wildcard $$(KEYMAP_PATH))", "") + POTENTIAL_KEYMAP_JSON := $$(POTENTIAL_DIR)/keymap.json + POTENTIAL_KEYMAP_C := $$(POTENTIAL_DIR)/keymap.c + ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_JSON))","") + KEYMAP_JSON := $$(POTENTIAL_KEYMAP_JSON) + KEYMAP_PATH := $$(POTENTIAL_DIR) + endif + ifneq ("$$(wildcard $$(POTENTIAL_KEYMAP_C))","") + KEYMAP_C := $$(POTENTIAL_KEYMAP_C) + KEYMAP_PATH := $$(POTENTIAL_DIR) + endif + endif +endef + +$(foreach KM_DIR,$(POTENTIAL_KEYMAP_PATHS),$(eval $(call SEARCH_POTENTIAL_LOCATION, $(KM_DIR)))) + +LAYOUTS_PATH := layouts +LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/)))) + +ifneq ($(QMK_USERSPACE),) + LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH)) +endif + +define SEARCH_LAYOUTS + $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_POTENTIAL_LOCATION,$$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)))) +endef + +ifneq ($(FORCE_LAYOUT),) + ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS))) + $(info Forcing layout: $(FORCE_LAYOUT)) + LAYOUTS := $(FORCE_LAYOUT) + else + $(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist) + endif +endif + +$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS))) + +ifeq ("$$(wildcard $$(KEYMAP_PATH))", "") + $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap) + # this state should never be reached +endif From de8f05b4c33bcd1a3e765fa21146bcb56bf3349b Mon Sep 17 00:00:00 2001 From: Fabian Felix Selbach Date: Mon, 8 Dec 2025 21:21:12 +0100 Subject: [PATCH 03/23] [Keyboard] Add support for Alpha FS (#25756) --- .../fabiclawz/alpha_fs/keyboard.json | 268 ++++++++++++++++++ .../alpha_fs/keymaps/default/keymap.c | 16 ++ .../handwired/fabiclawz/alpha_fs/readme.md | 28 ++ 3 files changed, 312 insertions(+) create mode 100644 keyboards/handwired/fabiclawz/alpha_fs/keyboard.json create mode 100644 keyboards/handwired/fabiclawz/alpha_fs/keymaps/default/keymap.c create mode 100644 keyboards/handwired/fabiclawz/alpha_fs/readme.md diff --git a/keyboards/handwired/fabiclawz/alpha_fs/keyboard.json b/keyboards/handwired/fabiclawz/alpha_fs/keyboard.json new file mode 100644 index 00000000000..0d694857733 --- /dev/null +++ b/keyboards/handwired/fabiclawz/alpha_fs/keyboard.json @@ -0,0 +1,268 @@ +{ + "manufacturer": "FabiClawZ", + "keyboard_name": "handwired/fabiclawz/alpha_fs", + "maintainer": "FFS2309", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10"], + "rows": ["GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP26"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "multisplash": true, + "solid_reactive_simple": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 13, "y": 0, "flags": 1}, + {"matrix": [9, 1], "x": 24, "y": 0, "flags": 1}, + {"matrix": [0, 2], "x": 34, "y": 0, "flags": 1}, + {"matrix": [9, 2], "x": 45, "y": 0, "flags": 1}, + {"matrix": [0, 3], "x": 57, "y": 0, "flags": 1}, + {"matrix": [9, 3], "x": 68, "y": 0, "flags": 1}, + {"matrix": [0, 4], "x": 78, "y": 0, "flags": 1}, + {"matrix": [9, 4], "x": 89, "y": 0, "flags": 1}, + {"matrix": [0, 5], "x": 102, "y": 0, "flags": 1}, + {"matrix": [9, 5], "x": 112, "y": 0, "flags": 1}, + {"matrix": [0, 6], "x": 123, "y": 0, "flags": 1}, + {"matrix": [9, 6], "x": 133, "y": 0, "flags": 1}, + {"matrix": [0, 7], "x": 146, "y": 0, "flags": 1}, + {"matrix": [0, 8], "x": 159, "y": 0, "flags": 1}, + {"matrix": [7, 8], "x": 169, "y": 0, "flags": 1}, + {"matrix": [8, 8], "x": 180, "y": 0, "flags": 1}, + {"matrix": [9, 8], "x": 193, "y": 0, "flags": 1}, + {"matrix": [0, 10], "x": 203, "y": 0, "flags": 1}, + {"matrix": [1, 10], "x": 214, "y": 0, "flags": 1}, + {"matrix": [2, 10], "x": 224, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1}, + {"matrix": [1, 1], "x": 10, "y": 15, "flags": 4}, + {"matrix": [8, 1], "x": 21, "y": 15, "flags": 4}, + {"matrix": [1, 2], "x": 31, "y": 15, "flags": 4}, + {"matrix": [8, 2], "x": 42, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 52, "y": 15, "flags": 4}, + {"matrix": [8, 3], "x": 63, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 73, "y": 15, "flags": 4}, + {"matrix": [8, 4], "x": 83, "y": 15, "flags": 4}, + {"matrix": [1, 5], "x": 94, "y": 15, "flags": 4}, + {"matrix": [8, 5], "x": 104, "y": 15, "flags": 4}, + {"matrix": [1, 6], "x": 115, "y": 15, "flags": 4}, + {"matrix": [8, 6], "x": 125, "y": 15, "flags": 4}, + {"matrix": [1, 7], "x": 141, "y": 15, "flags": 1}, + {"matrix": [1, 8], "x": 159, "y": 15, "flags": 1}, + {"matrix": [6, 8], "x": 169, "y": 15, "flags": 1}, + {"matrix": [5, 8], "x": 180, "y": 15, "flags": 1}, + {"matrix": [3, 10], "x": 193, "y": 15, "flags": 8}, + {"matrix": [4, 10], "x": 203, "y": 15, "flags": 4}, + {"matrix": [5, 10], "x": 214, "y": 15, "flags": 4}, + {"matrix": [6, 10], "x": 224, "y": 15, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 27, "flags": 1}, + {"matrix": [2, 1], "x": 16, "y": 27, "flags": 4}, + {"matrix": [7, 1], "x": 26, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 36, "y": 27, "flags": 4}, + {"matrix": [7, 2], "x": 47, "y": 27, "flags": 4}, + {"matrix": [2, 3], "x": 57, "y": 27, "flags": 4}, + {"matrix": [7, 3], "x": 68, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 78, "y": 27, "flags": 4}, + {"matrix": [7, 4], "x": 89, "y": 27, "flags": 4}, + {"matrix": [2, 5], "x": 99, "y": 27, "flags": 4}, + {"matrix": [7, 5], "x": 109, "y": 27, "flags": 4}, + {"matrix": [2, 6], "x": 120, "y": 27, "flags": 4}, + {"matrix": [7, 6], "x": 130, "y": 27, "flags": 4}, + {"matrix": [2, 7], "x": 147, "y": 20, "flags": 1}, + {"matrix": [2, 8], "x": 159, "y": 27, "flags": 1}, + {"matrix": [3, 8], "x": 169, "y": 27, "flags": 1}, + {"matrix": [4, 8], "x": 180, "y": 27, "flags": 1}, + {"matrix": [0, 9], "x": 193, "y": 27, "flags": 4}, + {"matrix": [1, 9], "x": 203, "y": 27, "flags": 4}, + {"matrix": [2, 9], "x": 214, "y": 27, "flags": 4}, + {"matrix": [7, 10], "x": 224, "y": 34, "flags": 4}, + {"matrix": [3, 0], "x": 4, "y": 40, "flags": 8}, + {"matrix": [3, 1], "x": 18, "y": 40, "flags": 4}, + {"matrix": [6, 1], "x": 29, "y": 40, "flags": 4}, + {"matrix": [3, 2], "x": 39, "y": 40, "flags": 4}, + {"matrix": [6, 2], "x": 50, "y": 40, "flags": 4}, + {"matrix": [3, 3], "x": 60, "y": 40, "flags": 4}, + {"matrix": [6, 3], "x": 70, "y": 40, "flags": 4}, + {"matrix": [3, 4], "x": 81, "y": 40, "flags": 4}, + {"matrix": [6, 4], "x": 91, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 102, "y": 40, "flags": 4}, + {"matrix": [6, 5], "x": 112, "y": 40, "flags": 4}, + {"matrix": [3, 6], "x": 123, "y": 40, "flags": 4}, + {"matrix": [6, 6], "x": 133, "y": 40, "flags": 4}, + {"matrix": [5, 9], "x": 193, "y": 40, "flags": 4}, + {"matrix": [4, 9], "x": 203, "y": 40, "flags": 4}, + {"matrix": [3, 9], "x": 214, "y": 40, "flags": 4}, + {"matrix": [4, 0], "x": 1, "y": 52, "flags": 1}, + {"matrix": [4, 1], "x": 13, "y": 52, "flags": 4}, + {"matrix": [5, 1], "x": 23, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 34, "y": 52, "flags": 4}, + {"matrix": [5, 2], "x": 44, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 55, "y": 52, "flags": 4}, + {"matrix": [5, 3], "x": 65, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 76, "y": 52, "flags": 4}, + {"matrix": [5, 4], "x": 86, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 69, "y": 52, "flags": 4}, + {"matrix": [5, 5], "x": 107, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 117, "y": 52, "flags": 4}, + {"matrix": [5, 6], "x": 137, "y": 52, "flags": 1}, + {"matrix": [3, 7], "x": 169, "y": 52, "flags": 1}, + {"matrix": [6, 9], "x": 193, "y": 52, "flags": 4}, + {"matrix": [7, 9], "x": 203, "y": 52, "flags": 4}, + {"matrix": [8, 9], "x": 214, "y": 52, "flags": 4}, + {"matrix": [8, 10], "x": 224, "y": 58, "flags": 1}, + {"matrix": [5, 0], "x": 1, "y": 64, "flags": 1}, + {"matrix": [6, 0], "x": 14, "y": 64, "flags": 1}, + {"matrix": [7, 0], "x": 27, "y": 64, "flags": 1}, + {"matrix": [8, 0], "x": 66, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 105, "y": 64, "flags": 1}, + {"matrix": [9, 7], "x": 118, "y": 64, "flags": 1}, + {"matrix": [8, 7], "x": 131, "y": 64, "flags": 1}, + {"matrix": [7, 7], "x": 145, "y": 64, "flags": 1}, + {"matrix": [6, 7], "x": 159, "y": 64, "flags": 1}, + {"matrix": [5, 7], "x": 169, "y": 64, "flags": 1}, + {"matrix": [4, 7], "x": 180, "y": 64, "flags": 1}, + {"matrix": [9, 9], "x": 198, "y": 64, "flags": 4}, + {"matrix": [9, 10], "x": 214, "y": 64, "flags": 1} + ] + }, + "url": "https://github.com/FFS2309/alpha_fs_keyboard", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4643" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP11" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "F2", "matrix": [9, 1], "x": 2.25, "y": 0}, + {"label": "F3", "matrix": [0, 2], "x": 3.25, "y": 0}, + {"label": "F4", "matrix": [9, 2], "x": 4.25, "y": 0}, + {"label": "F5", "matrix": [0, 3], "x": 5.5, "y": 0}, + {"label": "F6", "matrix": [9, 3], "x": 6.5, "y": 0}, + {"label": "F7", "matrix": [0, 4], "x": 7.5, "y": 0}, + {"label": "F8", "matrix": [9, 4], "x": 8.5, "y": 0}, + {"label": "F9", "matrix": [0, 5], "x": 9.75, "y": 0}, + {"label": "F10", "matrix": [9, 5], "x": 10.75, "y": 0}, + {"label": "F11", "matrix": [0, 6], "x": 11.75, "y": 0}, + {"label": "F12", "matrix": [9, 6], "x": 12.75, "y": 0}, + {"label": "Extra1", "matrix": [0, 7], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [0, 8], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "matrix": [7, 8], "x": 16.25, "y": 0}, + {"label": "Pause", "matrix": [8, 8], "x": 17.25, "y": 0}, + {"label": "Extra2", "matrix": [9, 8], "x": 18.5, "y": 0}, + {"label": "Extra3", "matrix": [0, 10], "x": 19.5, "y": 0}, + {"label": "Extra4", "matrix": [1, 10], "x": 20.5, "y": 0}, + {"label": "Extra5", "matrix": [2, 10], "x": 21.5, "y": 0}, + {"label": "^", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "2", "matrix": [8, 1], "x": 2, "y": 1.5}, + {"label": "3", "matrix": [1, 2], "x": 3, "y": 1.5}, + {"label": "4", "matrix": [8, 2], "x": 4, "y": 1.5}, + {"label": "5", "matrix": [1, 3], "x": 5, "y": 1.5}, + {"label": "6", "matrix": [8, 3], "x": 6, "y": 1.5}, + {"label": "7", "matrix": [1, 4], "x": 7, "y": 1.5}, + {"label": "8", "matrix": [8, 4], "x": 8, "y": 1.5}, + {"label": "9", "matrix": [1, 5], "x": 9, "y": 1.5}, + {"label": "0", "matrix": [8, 5], "x": 10, "y": 1.5}, + {"label": "\u00df", "matrix": [1, 6], "x": 11, "y": 1.5}, + {"label": "\u00b4", "matrix": [8, 6], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 7], "x": 13, "y": 1.5, "w": 2}, + {"label": "Insert", "matrix": [1, 8], "x": 15.25, "y": 1.5}, + {"label": "Home", "matrix": [6, 8], "x": 16.25, "y": 1.5}, + {"label": "PgUp", "matrix": [5, 8], "x": 17.25, "y": 1.5}, + {"label": "Num Lock", "matrix": [3, 10], "x": 18.5, "y": 1.5}, + {"label": "/", "matrix": [4, 10], "x": 19.5, "y": 1.5}, + {"label": "*", "matrix": [5, 10], "x": 20.5, "y": 1.5}, + {"label": "-", "matrix": [6, 10], "x": 21.5, "y": 1.5}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [7, 1], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [2, 2], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [7, 2], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [2, 3], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [7, 3], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [2, 4], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [7, 4], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [2, 5], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [7, 5], "x": 10.5, "y": 2.5}, + {"label": "{", "matrix": [2, 6], "x": 11.5, "y": 2.5}, + {"label": "}", "matrix": [7, 6], "x": 12.5, "y": 2.5}, + {"label": "Enter", "matrix": [2, 7], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + {"label": "Delete", "matrix": [2, 8], "x": 15.25, "y": 2.5}, + {"label": "End", "matrix": [3, 8], "x": 16.25, "y": 2.5}, + {"label": "PgDn", "matrix": [4, 8], "x": 17.25, "y": 2.5}, + {"label": "7", "matrix": [0, 9], "x": 18.5, "y": 2.5}, + {"label": "8", "matrix": [1, 9], "x": 19.5, "y": 2.5}, + {"label": "9", "matrix": [2, 9], "x": 20.5, "y": 2.5}, + {"label": "+", "matrix": [7, 10], "x": 21.5, "y": 2.5, "h": 2}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [6, 1], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [6, 2], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [3, 3], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [6, 3], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [3, 4], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [6, 4], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [3, 5], "x": 9.75, "y": 3.5}, + {"label": ":", "matrix": [6, 5], "x": 10.75, "y": 3.5}, + {"label": "@", "matrix": [3, 6], "x": 11.75, "y": 3.5}, + {"label": "~", "matrix": [6, 6], "x": 12.75, "y": 3.5}, + {"label": "4", "matrix": [5, 9], "x": 18.5, "y": 3.5}, + {"label": "5", "matrix": [4, 9], "x": 19.5, "y": 3.5}, + {"label": "6", "matrix": [3, 9], "x": 20.5, "y": 3.5}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "|", "matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [5, 1], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [5, 2], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [4, 3], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [5, 3], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [4, 4], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.5}, + {"label": "<", "matrix": [4, 5], "x": 9.25, "y": 4.5}, + {"label": ">", "matrix": [5, 5], "x": 10.25, "y": 4.5}, + {"label": "?", "matrix": [4, 6], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [5, 6], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "\u2191", "matrix": [3, 7], "x": 16.25, "y": 4.5}, + {"label": "1", "matrix": [6, 9], "x": 18.5, "y": 4.5}, + {"label": "2", "matrix": [7, 9], "x": 19.5, "y": 4.5}, + {"label": "3", "matrix": [8, 9], "x": 20.5, "y": 4.5}, + {"label": "Enter", "matrix": [8, 10], "x": 21.5, "y": 4.5, "h": 2}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [6, 0], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [7, 0], "x": 2.5, "y": 5.5, "w": 1.25}, + {"matrix": [8, 0], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "AltGr", "matrix": [9, 0], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [9, 7], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Menu", "matrix": [8, 7], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [7, 7], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "\u2190", "matrix": [6, 7], "x": 15.25, "y": 5.5}, + {"label": "\u2193", "matrix": [5, 7], "x": 16.25, "y": 5.5}, + {"label": "\u2192", "matrix": [4, 7], "x": 17.25, "y": 5.5}, + {"label": "0", "matrix": [9, 9], "x": 18.5, "y": 5.5, "w": 2}, + {"label": ".", "matrix": [9, 10], "x": 20.5, "y": 5.5} + ] + } + } +} diff --git a/keyboards/handwired/fabiclawz/alpha_fs/keymaps/default/keymap.c b/keyboards/handwired/fabiclawz/alpha_fs/keymaps/default/keymap.c new file mode 100644 index 00000000000..bd9e146baf2 --- /dev/null +++ b/keyboards/handwired/fabiclawz/alpha_fs/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +// Copyright 2025 Fabian Felix Selbach (@FFS2309) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RM_TOGG, KC_PSCR, KC_SCRL, KC_PAUS, RM_NEXT, RM_PREV, RM_VALU, RM_VALD, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/handwired/fabiclawz/alpha_fs/readme.md b/keyboards/handwired/fabiclawz/alpha_fs/readme.md new file mode 100644 index 00000000000..2eae8d51322 --- /dev/null +++ b/keyboards/handwired/fabiclawz/alpha_fs/readme.md @@ -0,0 +1,28 @@ +# handwired/fabiclawz/alpha_fs + +![handwired/fabiclawz/alpha_fs](https://i.imgur.com/FOOmKXN.jpeg) + +My first keyboard with custom PCB, originally designed for the Milk-V duo series of RISC-V MCUs with pin compatibility with the Raspberry Pi Pico used in this +case for QMK. + +* Keyboard Maintainer: [Fabian Felix Selbach](https://github.com/FFS2309) +* Hardware Supported: Raspberry Pi Pico, Custom PCB +* Hardware Availability: [Hardware design files](https://github.com/FFS2309/alpha_fs_keyboard) + +Make example for this keyboard (after setting up your build environment): + + make handwired/fabiclawz/alpha_fs:default + +Flashing example for this keyboard: + + make handwired/fabiclawz/alpha_fs:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the Pi Pico if available +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From 107812ceef1c5efaa1d76b8136f119fa3f63f731 Mon Sep 17 00:00:00 2001 From: Jon Colverson Date: Mon, 8 Dec 2025 20:31:24 +0000 Subject: [PATCH 04/23] [Keyboard] Add PicoFX (#25704) --- keyboards/dj505/picofx/keyboard.json | 96 +++++++++++++++++++ .../dj505/picofx/keymaps/allinone/keymap.json | 26 +++++ .../dj505/picofx/keymaps/allinone/readme.md | 21 ++++ .../dj505/picofx/keymaps/default/keymap.json | 16 ++++ .../dj505/picofx/keymaps/default/readme.md | 12 +++ .../dj505/picofx/keymaps/menumode/keymap.json | 36 +++++++ .../dj505/picofx/keymaps/menumode/readme.md | 28 ++++++ keyboards/dj505/picofx/readme.md | 34 +++++++ 8 files changed, 269 insertions(+) create mode 100644 keyboards/dj505/picofx/keyboard.json create mode 100644 keyboards/dj505/picofx/keymaps/allinone/keymap.json create mode 100644 keyboards/dj505/picofx/keymaps/allinone/readme.md create mode 100644 keyboards/dj505/picofx/keymaps/default/keymap.json create mode 100644 keyboards/dj505/picofx/keymaps/default/readme.md create mode 100644 keyboards/dj505/picofx/keymaps/menumode/keymap.json create mode 100644 keyboards/dj505/picofx/keymaps/menumode/readme.md create mode 100644 keyboards/dj505/picofx/readme.md diff --git a/keyboards/dj505/picofx/keyboard.json b/keyboards/dj505/picofx/keyboard.json new file mode 100644 index 00000000000..802d4e9791d --- /dev/null +++ b/keyboards/dj505/picofx/keyboard.json @@ -0,0 +1,96 @@ +{ + "manufacturer": "dj505", + "keyboard_name": "PicoFX", + "maintainer": "jjc1138", + "bootloader": "rp2040", + "bootloader_instructions": "Hold down the BOOTSEL button on the microcontroller when connecting the USB cable", + "features": { + "bootmagic": true, + "extrakey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "direct": [ + ["GP19", null, "GP6", "GP27", null, "GP0"], + [null, "GP10", null, null, "GP2", null], + ["GP21", null, "GP8", "GP17", null, "GP4"], + ["GP14", "GP15", null, null, null, null] + ] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_splash": true, + "splash": true + }, + "driver": "ws2812", + "layout": [ + {"x": 0, "y": 64, "flags": 2}, + {"x": 0, "y": 0, "flags": 2}, + {"x": 112, "y": 0, "flags": 2}, + {"x": 112, "y": 64, "flags": 2}, + {"x": 224, "y": 64, "flags": 2}, + {"x": 224, "y": 0, "flags": 2} + ], + "sleep": true + }, + "url": "https://github.com/dj505/PicoFX", + "usb": { + "device_version": "1.0.0", + "pid": "0x4658", + "vid": "0xFEED" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP22" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "P1 UL", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "P1 UR", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "P2 UL", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "P2 UR", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "P1 CN", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "P2 CN", "matrix": [1, 4], "x": 4, "y": 1}, + {"label": "P1 DL", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "P1 DR", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "P2 DL", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "P2 DR", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "Service", "matrix": [3, 0], "x": 6.5, "y": 0.5}, + {"label": "Test", "matrix": [3, 1], "x": 6.5, "y": 1.5} + ] + } + } +} diff --git a/keyboards/dj505/picofx/keymaps/allinone/keymap.json b/keyboards/dj505/picofx/keymaps/allinone/keymap.json new file mode 100644 index 00000000000..22e8b804d3b --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/allinone/keymap.json @@ -0,0 +1,26 @@ +{ + "keyboard": "dj505/picofx", + "keymap": "allinone", + "layout": "LAYOUT", + "layers": [ + [ + "KC_Q", "KC_E", "KC_TAB", "KC_UP", + + "KC_X", "KC_G", + + "KC_A", "KC_D", "KC_SPC", "KC_DOWN", + + "LT(1,KC_ESC)", "KC_ENT" + ], + + [ + "KC_F1", "KC_F2", "KC_F5", "KC_F6", + + "KC_TRNS", "KC_TRNS", + + "KC_F3", "KC_F4", "KC_F7", "KC_F8", + + "KC_TRNS", "QK_BOOT" + ] + ] +} diff --git a/keyboards/dj505/picofx/keymaps/allinone/readme.md b/keyboards/dj505/picofx/keymaps/allinone/readme.md new file mode 100644 index 00000000000..c82751b1063 --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/allinone/readme.md @@ -0,0 +1,21 @@ +# PicoFX All-in-one Keymap + +The 'allinone' keymap puts most of the buttons that you need for navigating the Pump It Up Rise menus in the main mode. If you configure the game to use those buttons for gameplay as well, then you can play the game and navigate most of the menus without having to switch modes. + +``` + Q E Tab Up + X G + A D Space Down + + Service: Esc when tapped, or temporarily activates the mode below when held + Test: Enter +``` + +When Service is held the buttons have these meanings instead: +``` + F1 F2 F5 F6 + - - + F3 F4 F7 F8 + + Test: Bootloader mode +``` diff --git a/keyboards/dj505/picofx/keymaps/default/keymap.json b/keyboards/dj505/picofx/keymaps/default/keymap.json new file mode 100644 index 00000000000..bd814f333a3 --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/default/keymap.json @@ -0,0 +1,16 @@ +{ + "keyboard": "dj505/picofx", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_Q", "KC_E", "KC_R", "KC_Y", + + "KC_S", "KC_G", + + "KC_Z", "KC_C", "KC_V", "KC_N", + + "KC_ESC", "KC_ENT" + ] + ] +} diff --git a/keyboards/dj505/picofx/keymaps/default/readme.md b/keyboards/dj505/picofx/keymaps/default/readme.md new file mode 100644 index 00000000000..b3a6f482eb6 --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/default/readme.md @@ -0,0 +1,12 @@ +# PicoFX Default Keymap + +The default keymap matches the 'Basic 2' preset in Pump It Up Rise. In the game's options menu, navigate to the keyboard settings and press '2' (on your normal computer keyboard) to apply the matching preset. + +``` + Q E R Y + S G + Z C V N + + Service: Escape + Test: Enter +``` diff --git a/keyboards/dj505/picofx/keymaps/menumode/keymap.json b/keyboards/dj505/picofx/keymaps/menumode/keymap.json new file mode 100644 index 00000000000..21b3697b428 --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/menumode/keymap.json @@ -0,0 +1,36 @@ +{ + "keyboard": "dj505/picofx", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_Q", "KC_E", "KC_R", "KC_Y", + + "KC_S", "KC_G", + + "KC_Z", "KC_C", "KC_V", "KC_N", + + "MO(2)", "TG(1)" + ], + + [ + "KC_Q", "KC_E", "KC_TAB", "KC_UP", + + "KC_ESC", "KC_ENT", + + "KC_LEFT", "KC_RGHT", "KC_SPC", "KC_DOWN", + + "LT(2,KC_F1)", "KC_TRNS" + ], + + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + + "KC_TRNS", "KC_TRNS", + + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + + "KC_TRNS", "QK_BOOT" + ] + ] +} diff --git a/keyboards/dj505/picofx/keymaps/menumode/readme.md b/keyboards/dj505/picofx/keymaps/menumode/readme.md new file mode 100644 index 00000000000..74bfa8c96af --- /dev/null +++ b/keyboards/dj505/picofx/keymaps/menumode/readme.md @@ -0,0 +1,28 @@ +# PicoFX Menu Mode Keymap + +The 'menumode' keymap is like the 'default' keymap in that it matches the 'Basic 2' preset in Pump It Up Rise, but it also includes the ability the toggle into a menu mode that provides most of the keys you need to navigate the game's menus. + +In the game's options menu, navigate to the keyboard settings and press '2' (on your normal computer keyboard) to apply the 'Basic 2' preset. + +The keymap in normal mode: +``` + Q E R Y + S G + Z C V N + + Test: Toggle to menu mode +``` + +And when in menu mode: +``` + Q E Tab Up + Esc Enter + Left Right Space Down + + Service: F1 + Test: Toggle back to game mode +``` + +It might take a little bit of practice to remember where everything is in menu mode. The rule of thumb is that the layout roughly corresponds to where those controls appear on the game's song selection screen. + +In either mode, holding the Service button and pressing the Test button will put the controller into bootloader mode for installing new firmware versions. diff --git a/keyboards/dj505/picofx/readme.md b/keyboards/dj505/picofx/readme.md new file mode 100644 index 00000000000..3f72323d343 --- /dev/null +++ b/keyboards/dj505/picofx/readme.md @@ -0,0 +1,34 @@ +# dj505/picofx + +![PicoFX controller](https://i.imgur.com/YNsJPg0.png) + +PicoFX: A compact keyboard-style controller for the *Pump It Up* rhythm game series. This firmware is intended for using the controller with the [Pump It Up Rise](https://store.steampowered.com/app/2756930/PUMP_IT_UP_RISE/) home version of the game. + +* Hardware Supported: [PicoFX](https://github.com/dj505/PicoFX) +* Keyboard Maintainer: [jjc1138](https://github.com/jjc1138) + +Make example for this keyboard (after setting up your build environment): + + make dj505/picofx:default + +Flashing example for this keyboard: + + make dj505/picofx:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Keymaps + +There are three keymaps provided, or you can build your own using the instructions below. + + * [default](keymaps/default/readme.md) + * [menumode](keymaps/menumode/readme.md) + * [allinone](keymaps/allinone/readme.md) + +### Bootloader + +Put the controller in bootloader mode in one of three ways: + +* **Physical reset button**: Hold down the BOOTSEL button on the microcontroller when connecting the USB cable. +* **Bootmagic reset**: If a version of this firmware is already installed, hold down the top-left button on the keyboard when connecting the USB cable. +* **Keycode in keymap**: If a version of this firmware is already installed with the 'menumode' or 'allinone' keymap, hold down the Service button and press the Test button. Or press a button mapped to `QK_BOOT` in your own keymap. From d7c74217848b094462c5faf99e05d8f2f14961fb Mon Sep 17 00:00:00 2001 From: Diff-fusion Date: Mon, 8 Dec 2025 22:58:04 +0100 Subject: [PATCH 05/23] Fix flash wear leveling sector calculation (#24776) --- .../drivers/wear_leveling/wear_leveling_efl.c | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c index 2328ea06740..7fa57bc738d 100644 --- a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c +++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c @@ -84,13 +84,23 @@ bool backing_store_init(void) { #else // defined(WEAR_LEVELING_EFL_FIRST_SECTOR) // Work out how many sectors we want to use, working backwards from the end of the flash - flash_sector_t last_sector = desc->sectors_count - WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT; + flash_sector_t last_sector = desc->sectors_count; + + // skip sectors that are past the actual flash size + while (flashGetSectorOffset(flash, last_sector - 1) >= flash_size) { + if (--last_sector == 0) { + chSysHalt("No sector in available flash range"); + } + } + + if (WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT >= last_sector) { + chSysHalt("Last sector intended to be used with wear_leveling is beyond available flash descriptor range"); + } + + last_sector -= WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT; + for (flash_sector_t i = 0; i < last_sector; ++i) { first_sector = last_sector - i - 1; - if (flashGetSectorOffset(flash, first_sector) >= flash_size) { - last_sector = first_sector; - continue; - } counter += flashGetSectorSize(flash, first_sector); if (counter >= (WEAR_LEVELING_BACKING_SIZE)) { sector_count = last_sector - first_sector; @@ -99,6 +109,10 @@ bool backing_store_init(void) { } } + if (counter < WEAR_LEVELING_BACKING_SIZE) { + chSysHalt("Not enough flash is available for the requested wear_leveling size"); + } + #endif // defined(WEAR_LEVELING_EFL_FIRST_SECTOR) return true; From 505e5c7033f841e277e227718ed328cf64c8a2fc Mon Sep 17 00:00:00 2001 From: ploopyco <54917504+ploopyco@users.noreply.github.com> Date: Mon, 8 Dec 2025 17:24:42 -0500 Subject: [PATCH 06/23] Add new mouse "Ploopy Nano 2 Trackball" (#25762) --- keyboards/ploopyco/nano_2/config.h | 33 ++++++++++++++++ keyboards/ploopyco/nano_2/info.json | 27 +++++++++++++ .../ploopyco/nano_2/keymaps/default/keymap.c | 23 +++++++++++ keyboards/ploopyco/nano_2/readme.md | 38 +++++++++++++++++++ .../ploopyco/nano_2/rev2_003/keyboard.json | 7 ++++ keyboards/ploopyco/nano_2/rev2_003/readme.md | 1 + keyboards/ploopyco/nano_2/rules.mk | 1 + 7 files changed, 130 insertions(+) create mode 100644 keyboards/ploopyco/nano_2/config.h create mode 100644 keyboards/ploopyco/nano_2/info.json create mode 100644 keyboards/ploopyco/nano_2/keymaps/default/keymap.c create mode 100644 keyboards/ploopyco/nano_2/readme.md create mode 100644 keyboards/ploopyco/nano_2/rev2_003/keyboard.json create mode 100644 keyboards/ploopyco/nano_2/rev2_003/readme.md create mode 100644 keyboards/ploopyco/nano_2/rules.mk diff --git a/keyboards/ploopyco/nano_2/config.h b/keyboards/ploopyco/nano_2/config.h new file mode 100644 index 00000000000..7d2b96fd8ec --- /dev/null +++ b/keyboards/ploopyco/nano_2/config.h @@ -0,0 +1,33 @@ +/* Copyright 2024 Colin Lam (Ploopy Corporation) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define UNUSABLE_PINS \ + { GP1, GP3, GP4, GP6, GP8, GP10, GP14, GP16, GP18, GP20, GP22, GP24, GP25, GP26, GP27, GP28, GP29 } + +#define MOUSE_EXTENDED_REPORT + +#define PLOOPY_DRAGSCROLL_MOMENTARY +#define PLOOPY_DRAGSCROLL_DIVISOR_H 64.0 +#define PLOOPY_DRAGSCROLL_DIVISOR_V 64.0 + +#define PAW3222_CS_PIN GP5 +#define PAW3222_MOTION_PIN GP9 +#define PAW3222_SPI_DIVISOR 64 +#define SPI_SCK_PIN GP2 +#define SPI_MISO_PIN GP0 +#define SPI_MOSI_PIN GP7 diff --git a/keyboards/ploopyco/nano_2/info.json b/keyboards/ploopyco/nano_2/info.json new file mode 100644 index 00000000000..ad69a0c04e3 --- /dev/null +++ b/keyboards/ploopyco/nano_2/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "Ploopy Nano 2 Trackball", + "manufacturer": "Ploopy Corporation", + "url": "www.ploopy.co", + "maintainer": "ploopyco", + "usb": { + "vid": "0x5043", + "pid": "0x4CE5", + "device_version": "0.0.1", + "max_power": 100 + }, + "features": { + "bootmagic": true, + "extrakey": true, + "nkro": true, + "pointing_device": true + }, + "processor": "RP2040", + "bootloader": "rp2040", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0, "matrix": [0, 0]} + ] + } + } +} diff --git a/keyboards/ploopyco/nano_2/keymaps/default/keymap.c b/keyboards/ploopyco/nano_2/keymaps/default/keymap.c new file mode 100644 index 00000000000..9fa7252a665 --- /dev/null +++ b/keyboards/ploopyco/nano_2/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( DRAG_SCROLL ) +}; diff --git a/keyboards/ploopyco/nano_2/readme.md b/keyboards/ploopyco/nano_2/readme.md new file mode 100644 index 00000000000..509a62f9fa6 --- /dev/null +++ b/keyboards/ploopyco/nano_2/readme.md @@ -0,0 +1,38 @@ +# Ploopy Nano 2 Trackball + +![Ploopyco Trackball Nano 2](https://cdn.ploopy.co/nano2-media-assets/site-photos/_MG_2495.jpg) + +It's a DIY, QMK Powered Trackball...Nano! + +* Maintainer: [PloopyCo](https://github.com/ploopyco) +* Key contributors: [Drashna Jael're](https://github.com/drashna/), [Germ](https://github.com/germ/) +* Hardware Supported: RP2040 +* Hardware Availability: [Store](https://ploopy.co/nano-2), [GitHub](https://github.com/ploopyco) + +Make example for this keyboard (after setting up your build environment): + + make ploopyco/nano_2/rev2_003:default + +Flashing example for this keyboard: + + make ploopyco/nano_2/rev2_003:default:flash + +# Building Firmware + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Triggering the Bootloader + +[Do you see those two golden holes in the board](https://ploopy.co/wp-content/uploads/2023/11/boot.jpg)? Those are called **vias**. They act exactly like a switch does. Right now, that switch is OFF. However, if you take a paperclip or a pair of metal tweezers and touch those two vias, the two vias will form an electrical connection. Effectively, that switch turns ON. + +Go ahead and connect the two vias, and then (while the vias are connected) plug in the Nano 2 board into your computer. + +The computer should recognise that a mass storage device was just plugged in. Once this is done, you should be able to drag and drop files onto the Nano 2 board, as if the board was a USB drive. Feel free to remove the tweezers or paperclip at this point. + +If you want to upload a new firmware file (a ".uf2" file, like "nano-2-awesome-version.uf2" or something), just drag it into the folder, and it'll automatically install on the Nano 2 board and restart itself, in normal operating mode. You're done! + +**TIP**: If your firmware is in some kind of strange state and uploading new firmware isn't fixing it, try uploading [a flash nuke](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython#flash-resetting-uf2-3083182) to the Nano 2 board before flashing the new firmware. It wipes the memory of the Nano 2 board completely clean, which can help clear a few types of errors. + +# Customizing your Ploopy Nano 2 + +You can find customziation options [here](../readme.md). \ No newline at end of file diff --git a/keyboards/ploopyco/nano_2/rev2_003/keyboard.json b/keyboards/ploopyco/nano_2/rev2_003/keyboard.json new file mode 100644 index 00000000000..767a6ba1541 --- /dev/null +++ b/keyboards/ploopyco/nano_2/rev2_003/keyboard.json @@ -0,0 +1,7 @@ +{ + "matrix_pins": { + "direct": [ + ["GP17"] + ] + } +} diff --git a/keyboards/ploopyco/nano_2/rev2_003/readme.md b/keyboards/ploopyco/nano_2/rev2_003/readme.md new file mode 100644 index 00000000000..052a17f3969 --- /dev/null +++ b/keyboards/ploopyco/nano_2/rev2_003/readme.md @@ -0,0 +1 @@ +See the main readme for more details. This is just here for when future revisions of the board are released. diff --git a/keyboards/ploopyco/nano_2/rules.mk b/keyboards/ploopyco/nano_2/rules.mk new file mode 100644 index 00000000000..e468209eba4 --- /dev/null +++ b/keyboards/ploopyco/nano_2/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = paw3222 From a86322e4a7747500b25cdc57438c2ae06473760e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 8 Dec 2025 22:26:14 +0000 Subject: [PATCH 07/23] Trigger develop docs rebuild on push (#25860) --- .github/workflows/docs.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 20a1372f260..d3b032248f6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -63,3 +63,16 @@ jobs: folder: .build/docs git-config-name: QMK Bot git-config-email: hello@qmk.fm + + - name: Deploy Develop + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' && github.repository == 'qmk/qmk_firmware' }} + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.QMK_BOT_TOKEN }} + script: | + const result = await github.rest.actions.createWorkflowDispatch({ + owner: 'qmk', + repo: 'qmk_docs_devel', + workflow_id: 'develop.yml', + ref: 'main', + }) From 2b61ca078dec31542d87e2caa26cf961fcb45ab3 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 8 Dec 2025 22:44:07 +0000 Subject: [PATCH 08/23] Test commit --- docs/__capabilities.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/__capabilities.md b/docs/__capabilities.md index 873ca44664f..efa0400ff50 100644 --- a/docs/__capabilities.md +++ b/docs/__capabilities.md @@ -2,6 +2,8 @@ This page lays out the capabilities used by the QMK Firmware documentation, in order to aid future transitions to other page generators. Focuses mainly on things other than normal Markdown, as it's assumed that markdown generators should still function accordingly. +test + ## Overall capabilities Unrelated to styling, high-level tech. From c8f6e6a936d4c041b0ca01b83f632016ff86ea39 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 8 Dec 2025 22:55:58 +0000 Subject: [PATCH 09/23] Revert "Trigger develop docs rebuild on push" (#25862) Revert "Trigger develop docs rebuild on push (#25860)" This reverts commit a86322e4a7747500b25cdc57438c2ae06473760e. --- .github/workflows/docs.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d3b032248f6..20a1372f260 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -63,16 +63,3 @@ jobs: folder: .build/docs git-config-name: QMK Bot git-config-email: hello@qmk.fm - - - name: Deploy Develop - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' && github.repository == 'qmk/qmk_firmware' }} - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.QMK_BOT_TOKEN }} - script: | - const result = await github.rest.actions.createWorkflowDispatch({ - owner: 'qmk', - repo: 'qmk_docs_devel', - workflow_id: 'develop.yml', - ref: 'main', - }) From 73a6496516c165a8d7ec023513f7fd32cd7bc78f Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 9 Dec 2025 00:21:25 +0000 Subject: [PATCH 10/23] Trigger develop docs rebuild on push (#25863) --- .github/workflows/develop_docs.yml | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/develop_docs.yml diff --git a/.github/workflows/develop_docs.yml b/.github/workflows/develop_docs.yml new file mode 100644 index 00000000000..4c569da3f8d --- /dev/null +++ b/.github/workflows/develop_docs.yml @@ -0,0 +1,34 @@ +name: Generate Develop Docs + +permissions: + contents: write + +on: + push: + branches: + - develop + paths: + - 'builddefs/docsgen/**' + - 'tmk_core/**' + - 'quantum/**' + - 'platforms/**' + - 'docs/**' + - '.github/workflows/docs.yml' + +jobs: + generate: + runs-on: ubuntu-latest + + steps: + - name: Deploy Develop + if: ${{ github.repository == 'qmk/qmk_firmware' }} + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.QMK_BOT_TOKEN }} + script: | + const result = await github.rest.actions.createWorkflowDispatch({ + owner: 'qmk', + repo: 'qmk_docs_devel', + workflow_id: 'develop.yml', + ref: 'main', + }) From c1b8b3dc6a09ccc138199daf5d1a5ea8c1806b99 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 9 Dec 2025 00:22:31 +0000 Subject: [PATCH 11/23] Revert test commit --- docs/__capabilities.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/__capabilities.md b/docs/__capabilities.md index efa0400ff50..873ca44664f 100644 --- a/docs/__capabilities.md +++ b/docs/__capabilities.md @@ -2,8 +2,6 @@ This page lays out the capabilities used by the QMK Firmware documentation, in order to aid future transitions to other page generators. Focuses mainly on things other than normal Markdown, as it's assumed that markdown generators should still function accordingly. -test - ## Overall capabilities Unrelated to styling, high-level tech. From 10faca0b853f9d2ab1cca7981391ec44de0e369a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Tue, 9 Dec 2025 03:14:46 +0000 Subject: [PATCH 12/23] Move shutdown delay to audio feature (#25859) --- quantum/audio/audio.c | 21 +++++++++++++++++++++ quantum/audio/audio.h | 2 ++ quantum/quantum.c | 24 +++++++++--------------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 461ec895449..b6b39a93508 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -71,6 +71,10 @@ # define AUDIO_DEFAULT_CLICKY_ON true #endif +#ifndef AUDIO_SHUTDOWN_DELAY +# define AUDIO_SHUTDOWN_DELAY 250 +#endif + #ifndef AUDIO_TONE_STACKSIZE # define AUDIO_TONE_STACKSIZE 8 #endif @@ -114,9 +118,14 @@ extern uint16_t voices_timer; #ifndef AUDIO_OFF_SONG # define AUDIO_OFF_SONG SONG(AUDIO_OFF_SOUND) #endif +#ifndef GOODBYE_SONG +# define GOODBYE_SONG SONG(GOODBYE_SOUND) +#endif + float startup_song[][2] = STARTUP_SONG; float audio_on_song[][2] = AUDIO_ON_SONG; float audio_off_song[][2] = AUDIO_OFF_SONG; +float goodbye_song[][2] = GOODBYE_SONG; static bool audio_initialized = false; static bool audio_driver_stopped = true; @@ -210,6 +219,18 @@ void audio_startup(void) { last_timestamp = timer_read(); } +void audio_shutdown(void) { + uint16_t timer_start = timer_read(); + + PLAY_SONG(goodbye_song); + + while (timer_elapsed(timer_start) < AUDIO_SHUTDOWN_DELAY) { + wait_ms(1); + } + + stop_all_notes(); +} + void audio_toggle(void) { if (audio_config.enable) { stop_all_notes(); diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index a41814d0f8c..2cc81439803 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -218,6 +218,8 @@ uint16_t audio_ms_to_duration(uint16_t duration_ms); void audio_startup(void); +void audio_shutdown(void); + // hardware interface // implementation in the driver_avr/arm_* respective parts diff --git a/quantum/quantum.c b/quantum/quantum.c index 128f8fb66d4..1a57548fd28 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -94,10 +94,6 @@ #endif #ifdef AUDIO_ENABLE -# ifndef GOODBYE_SONG -# define GOODBYE_SONG SONG(GOODBYE_SOUND) -# endif -float goodbye_song[][2] = GOODBYE_SONG; # ifdef DEFAULT_LAYER_SONGS float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; # endif @@ -218,18 +214,16 @@ void shutdown_quantum(bool jump_to_bootloader) { # ifndef NO_MUSIC_MODE music_all_notes_off(); # endif - uint16_t timer_start = timer_read(); - PLAY_SONG(goodbye_song); - shutdown_modules(jump_to_bootloader); - shutdown_kb(jump_to_bootloader); - while (timer_elapsed(timer_start) < 250) - wait_ms(1); - stop_all_notes(); -#else - shutdown_modules(jump_to_bootloader); - shutdown_kb(jump_to_bootloader); - wait_ms(250); + audio_shutdown(); #endif + + shutdown_modules(jump_to_bootloader); + shutdown_kb(jump_to_bootloader); + +#if SHUTDOWN_DELAY > 0 + wait_ms(SHUTDOWN_DELAY); +#endif + #ifdef HAPTIC_ENABLE haptic_shutdown(); #endif From e2d19eda57b21e22dfabfccf72d2f7a1d0997633 Mon Sep 17 00:00:00 2001 From: lental Date: Mon, 8 Dec 2025 19:30:39 -0800 Subject: [PATCH 13/23] Add queue.len() keyboard (#24823) Co-authored-by: Joel Challis --- keyboards/dotlen/queue/keyboard.json | 187 ++++++++++++++++++ .../dotlen/queue/keymaps/default/keymap.c | 41 ++++ keyboards/dotlen/queue/readme.md | 28 +++ 3 files changed, 256 insertions(+) create mode 100644 keyboards/dotlen/queue/keyboard.json create mode 100644 keyboards/dotlen/queue/keymaps/default/keymap.c create mode 100644 keyboards/dotlen/queue/readme.md diff --git a/keyboards/dotlen/queue/keyboard.json b/keyboards/dotlen/queue/keyboard.json new file mode 100644 index 00000000000..3dd3807194c --- /dev/null +++ b/keyboards/dotlen/queue/keyboard.json @@ -0,0 +1,187 @@ +{ + "manufacturer": "DotLen", + "keyboard_name": "Queue.Len()", + "maintainer": "lental", + "bootloader": "atmel-dfu", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "B7"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "E6"], + "rows": ["D5", "D3", "D2", "D1", "D0"] + }, + "processor": "atmega32u4", + "url": "https://github.com/lental/keyboard-firmware", + "usb": { + "device_version": "0.0.1", + "pid": "0x000A", + "vid": "0xFACE" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_triple_space" + }, + "layouts": { + "LAYOUT_standard_space": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "split", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "rotary", "matrix": [2, 14], "x": 15, "y": 0, "encoder":0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Bksp", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "pgup", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "pgup", "matrix": [2, 13], "x": 15, "y": 2}, + {"label": "split", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "Shift", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "pgup", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 7], "x": 11, "y": 4}, + {"label": "Ctrl", "matrix": [4, 8], "x": 12, "y": 4}, + {"label": "left", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "down", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "right", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_triple_space": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "backspace", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "split", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "rotary", "matrix": [2, 14], "x": 15, "y": 0, "encoder":0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Bksp", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "pgup", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "pgup", "matrix": [2, 13], "x": 15, "y": 2}, + {"label": "split", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "Shift", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "pgup", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 7.25, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4}, + {"label": "Win", "matrix": [4, 7], "x": 11, "y": 4}, + {"label": "Ctrl", "matrix": [4, 8], "x": 12, "y": 4}, + {"label": "left", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "down", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "right", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/dotlen/queue/keymaps/default/keymap.c b/keyboards/dotlen/queue/keymaps/default/keymap.c new file mode 100644 index 00000000000..74f4cc59c27 --- /dev/null +++ b/keyboards/dotlen/queue/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2025 lental +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _BL, + _FL, + _AL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BL] = LAYOUT_all( + KC_GRAVE, KC_1 , KC_2 , KC_3, KC_4, KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0, KC_MINS,KC_EQL, KC_BSPC,KC_BSPC, KC_MUTE, + KC_TAB , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, + KC_LSFT, MO(_FL), KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT, KC_SLASH, KC_RSFT , KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC,KC_SPC, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[_FL] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,KC_F12,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_AL), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + +[_AL] = LAYOUT_all( + QK_BOOT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FL] = { ENCODER_CCW_CW(_______, _______)}, + [_AL] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif diff --git a/keyboards/dotlen/queue/readme.md b/keyboards/dotlen/queue/readme.md new file mode 100644 index 00000000000..7a004731c6d --- /dev/null +++ b/keyboards/dotlen/queue/readme.md @@ -0,0 +1,28 @@ +# Queue.len() + +![Queue.len()](https://i.imgur.com/8JKbm6P.png) + +A 65% keyboard with multiple layout support. + +* Keyboard Maintainer: [Lental](https://github.com/lental) +* Hardware Supported: Custom PCB +* Hardware Availability: Private Group Buy +* Keyboard Layout Editor [Link](https://www.keyboard-layout-editor.com/#/gists/d54fc38f606ce3e990a88044e9b71858) + +Make example for this keyboard (after setting up your build environment): + + make dotlen/queue:default + +Flashing example for this keyboard: + + make dotlen/queue:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From e6e66a9f2e4c8c2c31226c0617a1d3877f7424fc Mon Sep 17 00:00:00 2001 From: Philip <68480429+iliorik@users.noreply.github.com> Date: Tue, 9 Dec 2025 06:33:02 +0300 Subject: [PATCH 14/23] Update dactyl_manuform 5x8 keyboard.json (#24778) --- .../dactyl_manuform/5x8/keyboard.json | 81 ++++++++++--------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/keyboards/handwired/dactyl_manuform/5x8/keyboard.json b/keyboards/handwired/dactyl_manuform/5x8/keyboard.json index 2ac30107173..649987911b5 100644 --- a/keyboards/handwired/dactyl_manuform/5x8/keyboard.json +++ b/keyboards/handwired/dactyl_manuform/5x8/keyboard.json @@ -10,7 +10,7 @@ "features": { "bootmagic": true, "extrakey": true, - "mousekey": true, + "mousekey": true }, "qmk": { "locking": { @@ -25,6 +25,11 @@ "diode_direction": "COL2ROW", "split": { "enabled": true, + "matrix_pins": { + "right": { + "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"] + } + }, "serial": { "pin": "D0" } @@ -42,14 +47,14 @@ {"matrix": [0, 6], "x": 6, "y": 0}, {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [6, 7], "x": 17, "y": 0.5}, - {"matrix": [6, 6], "x": 16, "y": 0.5}, - {"matrix": [6, 5], "x": 15, "y": 0.5}, - {"matrix": [6, 4], "x": 14, "y": 0}, - {"matrix": [6, 3], "x": 13, "y": 0}, - {"matrix": [6, 2], "x": 12, "y": 0}, - {"matrix": [6, 1], "x": 11, "y": 0}, {"matrix": [6, 0], "x": 10, "y": 0}, + {"matrix": [6, 1], "x": 11, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 3], "x": 13, "y": 0}, + {"matrix": [6, 4], "x": 14, "y": 0}, + {"matrix": [6, 5], "x": 15, "y": 0.5}, + {"matrix": [6, 6], "x": 16, "y": 0.5}, + {"matrix": [6, 7], "x": 17, "y": 0.5}, {"matrix": [1, 0], "x": 0, "y": 1.5}, {"matrix": [1, 1], "x": 1, "y": 1.5}, @@ -60,14 +65,14 @@ {"matrix": [1, 6], "x": 6, "y": 1}, {"matrix": [1, 7], "x": 7, "y": 1}, - {"matrix": [7, 7], "x": 17, "y": 1.5}, - {"matrix": [7, 6], "x": 16, "y": 1.5}, - {"matrix": [7, 5], "x": 15, "y": 1.5}, - {"matrix": [7, 4], "x": 14, "y": 1}, - {"matrix": [7, 3], "x": 13, "y": 1}, - {"matrix": [7, 2], "x": 12, "y": 1}, - {"matrix": [7, 1], "x": 11, "y": 1}, {"matrix": [7, 0], "x": 10, "y": 1}, + {"matrix": [7, 1], "x": 11, "y": 1}, + {"matrix": [7, 2], "x": 12, "y": 1}, + {"matrix": [7, 3], "x": 13, "y": 1}, + {"matrix": [7, 4], "x": 14, "y": 1}, + {"matrix": [7, 5], "x": 15, "y": 1.5}, + {"matrix": [7, 6], "x": 16, "y": 1.5}, + {"matrix": [7, 7], "x": 17, "y": 1.5}, {"matrix": [2, 0], "x": 0, "y": 2.5}, {"matrix": [2, 1], "x": 1, "y": 2.5}, @@ -78,14 +83,14 @@ {"matrix": [2, 6], "x": 6, "y": 2}, {"matrix": [2, 7], "x": 7, "y": 2}, - {"matrix": [8, 7], "x": 17, "y": 2.5}, - {"matrix": [8, 6], "x": 16, "y": 2.5}, - {"matrix": [8, 5], "x": 15, "y": 2.5}, - {"matrix": [8, 4], "x": 14, "y": 2}, - {"matrix": [8, 3], "x": 13, "y": 2}, - {"matrix": [8, 2], "x": 12, "y": 2}, - {"matrix": [8, 1], "x": 11, "y": 2}, {"matrix": [8, 0], "x": 10, "y": 2}, + {"matrix": [8, 1], "x": 11, "y": 2}, + {"matrix": [8, 2], "x": 12, "y": 2}, + {"matrix": [8, 3], "x": 13, "y": 2}, + {"matrix": [8, 4], "x": 14, "y": 2}, + {"matrix": [8, 5], "x": 15, "y": 2.5}, + {"matrix": [8, 6], "x": 16, "y": 2.5}, + {"matrix": [8, 7], "x": 17, "y": 2.5}, {"matrix": [3, 0], "x": 0, "y": 3.5}, {"matrix": [3, 1], "x": 1, "y": 3.5}, @@ -95,41 +100,41 @@ {"matrix": [3, 5], "x": 5, "y": 3}, {"matrix": [3, 6], "x": 6, "y": 3}, - {"matrix": [9, 6], "x": 17, "y": 3.5}, - {"matrix": [9, 5], "x": 16, "y": 3.5}, - {"matrix": [9, 4], "x": 15, "y": 3.5}, - {"matrix": [9, 3], "x": 14, "y": 3}, - {"matrix": [9, 2], "x": 13, "y": 3}, - {"matrix": [9, 1], "x": 12, "y": 3}, - {"matrix": [9, 0], "x": 11, "y": 3}, + {"matrix": [9, 1], "x": 11, "y": 3}, + {"matrix": [9, 2], "x": 12, "y": 3}, + {"matrix": [9, 3], "x": 13, "y": 3}, + {"matrix": [9, 4], "x": 14, "y": 3}, + {"matrix": [9, 5], "x": 15, "y": 3.5}, + {"matrix": [9, 6], "x": 16, "y": 3.5}, + {"matrix": [9, 7], "x": 17, "y": 3.5}, {"matrix": [4, 1], "x": 1, "y": 4.5}, {"matrix": [4, 2], "x": 2, "y": 4.5}, {"matrix": [4, 3], "x": 3, "y": 4}, {"matrix": [4, 4], "x": 4, "y": 4}, - {"matrix": [10, 4], "x": 14, "y": 4}, {"matrix": [10, 3], "x": 13, "y": 4}, - {"matrix": [10, 2], "x": 12, "y": 5}, - {"matrix": [10, 1], "x": 11, "y": 5}, + {"matrix": [10, 4], "x": 14, "y": 4}, + {"matrix": [10, 5], "x": 15, "y": 4.5}, + {"matrix": [10, 6], "x": 16, "y": 4.5}, {"matrix": [4, 5], "x": 4.5, "y": 5}, {"matrix": [4, 6], "x": 5.5, "y": 5}, - {"matrix": [10, 6], "x": 14.5, "y": 4.5}, - {"matrix": [10, 5], "x": 15.5, "y": 4.5}, + {"matrix": [10, 1], "x": 11.5, "y": 5}, + {"matrix": [10, 2], "x": 12.5, "y": 5}, {"matrix": [5, 5], "x": 5, "y": 6}, {"matrix": [5, 6], "x": 6, "y": 6}, - {"matrix": [11, 6], "x": 12, "y": 6}, - {"matrix": [11, 5], "x": 11, "y": 6}, + {"matrix": [11, 1], "x": 11, "y": 6}, + {"matrix": [11, 2], "x": 12, "y": 6}, {"matrix": [5, 3], "x": 5, "y": 7}, {"matrix": [5, 4], "x": 6, "y": 7}, - {"matrix": [11, 4], "x": 12, "y": 7}, - {"matrix": [11, 3], "x": 11, "y": 7} + {"matrix": [11, 3], "x": 11, "y": 7}, + {"matrix": [11, 4], "x": 12, "y": 7} ] } } From 0881e0867b41f18eb4af03826512f8681752811f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=E1=BA=AFn?= <59417802+MaiTheSan@users.noreply.github.com> Date: Tue, 9 Dec 2025 11:06:24 +0700 Subject: [PATCH 15/23] Add support for Kami65 PCB (#24604) Co-authored-by: Duncan Sutherland Co-authored-by: Drashna Jaelre Co-authored-by: Joel Challis --- keyboards/chickenman/kami65/keyboard.json | 336 ++++++++++++++++++ .../kami65/keymaps/default/keymap.c | 49 +++ keyboards/chickenman/kami65/readme.md | 27 ++ 3 files changed, 412 insertions(+) create mode 100644 keyboards/chickenman/kami65/keyboard.json create mode 100644 keyboards/chickenman/kami65/keymaps/default/keymap.c create mode 100644 keyboards/chickenman/kami65/readme.md diff --git a/keyboards/chickenman/kami65/keyboard.json b/keyboards/chickenman/kami65/keyboard.json new file mode 100644 index 00000000000..548bc39bee2 --- /dev/null +++ b/keyboards/chickenman/kami65/keyboard.json @@ -0,0 +1,336 @@ +{ + "manufacturer": "Chickenman", + "keyboard_name": "Kami65", + "maintainer": "MaiTheSan", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "B12", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A10", "A0", "A9", "C13", "A1", "A2", "B11", "B10", "B1", "B0", "A7", "A6", "A5", "A4", "C14"], + "rows": ["B4", "A15", "A3", "A8", "B14"] + }, + "processor": "STM32F072", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 24, + "sleep": true + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x00A1", + "vid": "0xC41C" + }, + "ws2812": { + "pin": "B15" + }, + "layout_aliases": { + "LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs" + }, + "community_layouts": ["65_ansi_blocker", "65_ansi_blocker_split_bs", "65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K2D", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "K41", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K46", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K4A", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "K4B", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K04", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "K05", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "K06", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "K07", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "K08", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "K09", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "K0A", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "K0B", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "K0C", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "K0D", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "K0D", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "K0E", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "K11", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "K14", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "K15", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "K16", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "K17", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "K18", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "K19", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "K1A", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "K1B", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "K1C", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "K1D", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "K1E", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "K21", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "K23", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "K24", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "K25", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "K26", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "K27", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K28", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "K29", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "K2A", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "K2B", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "K2C", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "K33", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "K34", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "K35", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "K36", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "K37", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "K38", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "K39", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "K3A", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "K3B", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "K3C", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "K3D", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "K3E", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "K41", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K46", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "K4B", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "K4C", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "K4D", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "K4E", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/chickenman/kami65/keymaps/default/keymap.c b/keyboards/chickenman/kami65/keymaps/default/keymap.c new file mode 100644 index 00000000000..d66e90672ed --- /dev/null +++ b/keyboards/chickenman/kami65/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, UG_TOGG, + _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, UG_PREV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_NEXT, + _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/chickenman/kami65/readme.md b/keyboards/chickenman/kami65/readme.md new file mode 100644 index 00000000000..009808717f8 --- /dev/null +++ b/keyboards/chickenman/kami65/readme.md @@ -0,0 +1,27 @@ +# Kami65 + +![Kami65](https://i.imgur.com/SwXfDcr.png) + +A 65% keyboard. + +* Keyboard Maintainer: [Mai The San](https://github.com/maithesan) +* Hardware Supported: Kami65 Keyboard +* Hardware Availability: [UCSD GB](https://www.instagram.com/p/C1BD0RZsttm/) + +Make example for this keyboard (after setting up your build environment): + + make chickenman/kami65:default + +Flashing example for this keyboard: + + make chickenman/kami65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file From 6faca4d66355c6746bf241895641579134ec007f Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Tue, 9 Dec 2025 11:55:21 +0100 Subject: [PATCH 16/23] [Keyboard] Guard encoder behaviour on `projectcain/vault*` (#25864) Initial --- keyboards/projectcain/vault35/vault35.c | 6 ++++-- keyboards/projectcain/vault45/vault45.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/keyboards/projectcain/vault35/vault35.c b/keyboards/projectcain/vault35/vault35.c index 14aac7fdf70..6485ac854d6 100644 --- a/keyboards/projectcain/vault35/vault35.c +++ b/keyboards/projectcain/vault35/vault35.c @@ -16,14 +16,16 @@ #include "quantum.h" +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_PGDN); } else { - tap_code(KC_PGUP); + tap_code(KC_PGUP); } } return true; -} \ No newline at end of file +} +#endif diff --git a/keyboards/projectcain/vault45/vault45.c b/keyboards/projectcain/vault45/vault45.c index 05908ba9d7d..673ca8586c9 100644 --- a/keyboards/projectcain/vault45/vault45.c +++ b/keyboards/projectcain/vault45/vault45.c @@ -16,20 +16,22 @@ #include "quantum.h" +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_PGDN); } else { - tap_code(KC_PGUP); + tap_code(KC_PGUP); } } else if (index == 1) { /* Second encoder */ if (clockwise) { - tap_code(KC_DOWN); + tap_code(KC_DOWN); } else { tap_code(KC_UP); } } return true; } +#endif From ff75bce86acbbb0b7c6291171c89036af25a7844 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Dec 2025 19:15:23 +0000 Subject: [PATCH 17/23] Bump actions/github-script from 6 to 8 (#25866) Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v6...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/develop_docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/develop_docs.yml b/.github/workflows/develop_docs.yml index 4c569da3f8d..0e3e1b378e2 100644 --- a/.github/workflows/develop_docs.yml +++ b/.github/workflows/develop_docs.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Deploy Develop if: ${{ github.repository == 'qmk/qmk_firmware' }} - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.QMK_BOT_TOKEN }} script: | From b39661de9667b93c9482be26f6a9c41fd065d3b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Dec 2025 19:16:07 +0000 Subject: [PATCH 18/23] Bump JamesIves/github-pages-deploy-action from 4.7.4 to 4.7.5 (#25865) Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.4 to 4.7.5. - [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases) - [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.4...v4.7.5) --- updated-dependencies: - dependency-name: JamesIves/github-pages-deploy-action dependency-version: 4.7.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 20a1372f260..ee15fd8b9e3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -56,7 +56,7 @@ jobs: - name: Deploy if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }} - uses: JamesIves/github-pages-deploy-action@v4.7.4 + uses: JamesIves/github-pages-deploy-action@v4.7.5 with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages From 2929448605b29edf9f154e6ca9370f96dbb44145 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 19:11:25 +0000 Subject: [PATCH 19/23] Bump JamesIves/github-pages-deploy-action from 4.7.5 to 4.7.6 (#25867) Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.5 to 4.7.6. - [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases) - [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.5...v4.7.6) --- updated-dependencies: - dependency-name: JamesIves/github-pages-deploy-action dependency-version: 4.7.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index ee15fd8b9e3..5e5669ee782 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -56,7 +56,7 @@ jobs: - name: Deploy if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }} - uses: JamesIves/github-pages-deploy-action@v4.7.5 + uses: JamesIves/github-pages-deploy-action@v4.7.6 with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages From c1fedab4570a0b87b3422239a724681788727b09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 19:12:17 +0000 Subject: [PATCH 20/23] Bump peter-evans/create-pull-request from 7 to 8 (#25868) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7 to 8. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v7...v8) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/format_push.yml | 2 +- .github/workflows/regen_push.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/format_push.yml b/.github/workflows/format_push.yml index 738515251a0..8d017b7de33 100644 --- a/.github/workflows/format_push.yml +++ b/.github/workflows/format_push.yml @@ -47,7 +47,7 @@ jobs: git config user.email 'hello@qmk.fm' - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v8 if: ${{ github.repository == 'qmk/qmk_firmware'}} with: token: ${{ secrets.QMK_BOT_TOKEN }} diff --git a/.github/workflows/regen_push.yml b/.github/workflows/regen_push.yml index df7e9970ea2..98d6629bc3d 100644 --- a/.github/workflows/regen_push.yml +++ b/.github/workflows/regen_push.yml @@ -34,7 +34,7 @@ jobs: git config user.email 'hello@qmk.fm' - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v8 if: ${{ github.repository == 'qmk/qmk_firmware'}} with: token: ${{ secrets.QMK_BOT_TOKEN }} From 2e68ddc8266aa8bd70e8e734a5b433e2ed299603 Mon Sep 17 00:00:00 2001 From: Joshua Diamond Date: Fri, 12 Dec 2025 13:17:42 -0500 Subject: [PATCH 21/23] Fix broken compilation when OS_DETECTION_DEBUG_ENABLE is defined (#25869) Fix include in os_detection (broken in https://github.com/qmk/qmk_firmware/pull/24356) --- quantum/os_detection.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/os_detection.c b/quantum/os_detection.c index 552375f61c0..2a5237dfc31 100644 --- a/quantum/os_detection.c +++ b/quantum/os_detection.c @@ -23,7 +23,7 @@ #endif #ifdef OS_DETECTION_DEBUG_ENABLE -# include "eeconfig.h" +# include "nvm_eeprom_eeconfig_internal.h" # include "eeprom.h" # include "print.h" From 4f9582da2629eabd52dcff6ea6895de81249a501 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 12 Dec 2025 18:30:46 +0000 Subject: [PATCH 22/23] Install branch specific dependencies as part of bootstrap testing (#25871) --- .github/workflows/bootstrap_testing.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/bootstrap_testing.yml b/.github/workflows/bootstrap_testing.yml index 2e97f830818..c80d89a2187 100644 --- a/.github/workflows/bootstrap_testing.yml +++ b/.github/workflows/bootstrap_testing.yml @@ -141,6 +141,12 @@ jobs: bash /home/testuser/qmk_firmware/util/env-bootstrap.sh " + - name: Install dependencies + run: | + sudo -u testuser bash -c " + /home/testuser/.local/share/uv/tools/qmk/bin/python -m pip install -r /home/testuser/qmk_firmware/requirements.txt + " + - name: Test QMK CLI run: | sudo -u testuser bash -c " @@ -185,6 +191,10 @@ jobs: export CONFIRM=1 sh ./util/env-bootstrap.sh + - name: Install dependencies + run: | + $HOME/.local/share/uv/tools/qmk/bin/python -m pip install -r requirements.txt + - name: Test QMK CLI run: | # Add QMK CLI to PATH (bootstrap script installs it to ~/.local/bin on macOS) @@ -235,6 +245,10 @@ jobs: export CONFIRM=1 sh ./util/env-bootstrap.sh + - name: Install dependencies + run: | + /opt/uv/tools/qmk/Scripts/python -m pip install -r requirements.txt + - name: Test QMK CLI run: | # Add QMK CLI to PATH (bootstrap script installs it to /opt/uv/tools/bin on Windows MSYS2) From 9e0118172f23d88887a3f1d10971adf94840b8f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 20:11:19 +0000 Subject: [PATCH 23/23] Bump actions/upload-artifact from 5 to 6 (#25872) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci_build_major_branch_keymap.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build_major_branch_keymap.yml b/.github/workflows/ci_build_major_branch_keymap.yml index 89c932553a2..02ee966da2b 100644 --- a/.github/workflows/ci_build_major_branch_keymap.yml +++ b/.github/workflows/ci_build_major_branch_keymap.yml @@ -62,7 +62,7 @@ jobs: echo "targets=$(jq -c 'keys' targets.json)" >> $GITHUB_OUTPUT - name: Upload targets json - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: targets-${{ inputs.keymap }} path: targets.json @@ -112,7 +112,7 @@ jobs: qmk mass-compile -t -j $NCPUS -e DUMP_CI_METADATA=yes $(jq -r '.["${{ matrix.target }}"].targets' targets.json) || touch .failed - name: Upload binaries - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: firmware-${{ inputs.keymap }}-${{ matrix.target }} if-no-files-found: ignore @@ -146,7 +146,7 @@ jobs: merge-multiple: true - name: Upload all firmwares - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: firmware-${{ inputs.keymap }} if-no-files-found: ignore