Default USB Polling rate now 1kHz (#15352)
The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.
Something something Lets go gamers!
Split support for pointing devices (#15304)
Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.
See the Pointing Device documentation for further configuration options.
Legacy macro and action_function system removed (#16025)
The long time deprecated MACRO()
and action_get_macro
methods have been removed. Where possible, existing usages have been migrated over to core Macros.
Create a build error if no bootloader is specified (#16181)
Bootloader configuration is no longer assumed. Keyboards must now set either:
BOOTLOADER
withinrules.mk
bootloader
withininfo.json
Rename AdafruitBLE
to BluefruitLE
(#16127)
In preparation of future bluetooth work, the AdafruitBLE
integration has been renamed to allow potential for any other Adafruit BLE products.
The following keyboards have had their source moved within QMK:
Old Keyboard Name | New Keyboard Name |
---|---|
6ball | maple_computing/6ball |
7skb | salicylic_acid3/7skb |
7splus | salicylic_acid3/7splus |
acr60 | mechkeys/acr60 |
adalyn | tominabox1/adalyn |
ajisai74 | salicylic_acid3/ajisai74 |
aleth42 | 25keys/aleth42 |
alicia_cook | ibnuda/alicia_cook |
allison_numpad | prototypist/allison_numpad |
allison | prototypist/allison |
alu84 | mechkeys/alu84 |
angel17 | kakunpc/angel17 |
angel64/alpha | kakunpc/angel64/alpha |
angel64/rev1 | kakunpc/angel64/rev1 |
arch_36 | obosob/arch_36 |
bakeneko60 | kkatano/bakeneko60 |
bakeneko65/rev2 | kkatano/bakeneko65/rev2 |
bakeneko65/rev3 | kkatano/bakeneko65/rev3 |
bakeneko80 | kkatano/bakeneko80 |
barleycorn | yiancardesigns/barleycorn |
bat43/rev1 | dailycraft/bat43/rev1 |
bat43/rev2 | dailycraft/bat43/rev2 |
bigseries/1key | woodkeys/bigseries/1key |
bigseries/2key | woodkeys/bigseries/2key |
bigseries/3key | woodkeys/bigseries/3key |
bigseries/4key | woodkeys/bigseries/4key |
bkf | drhigsby/bkf |
business_card/alpha | kakunpc/business_card/alpha |
business_card/beta | kakunpc/business_card/beta |
butterstick | gboards/butterstick |
c39 | maple_computing/c39 |
cassette42 | 25keys/cassette42 |
chidori | kagizaraya/chidori |
chili | ydkb/chili |
chimera_ergo | glenpickle/chimera_ergo |
chimera_ls | glenpickle/chimera_ls |
chimera_ortho | glenpickle/chimera_ortho |
chimera_ortho_plus | glenpickle/chimera_ortho_plus |
choco60 | recompile_keys/choco60 |
choc_taro | kakunpc/choc_taro |
christmas_tree | maple_computing/christmas_tree |
claw44/rev1 | dailycraft/claw44/rev1 |
cocoa40 | recompile_keys/cocoa40 |
comet46 | satt/comet46 |
cu24 | capsunlocked/cu24 |
cu75 | capsunlocked/cu75 |
cu80 | capsunlocked/cu80/v1 |
delilah | rainkeebs/delilah |
diverge3 | unikeyboard/diverge3 |
divergetm2 | unikeyboard/divergetm2 |
dozen0 | yynmt/dozen0 |
dubba175 | drhigsby/dubba175 |
eggman | qpockets/eggman |
ergo42 | biacco42/ergo42 |
ergoarrows | salicylic_acid3/ergoarrows |
ergodash/mini | omkbd/ergodash/mini |
ergodash/rev1 | omkbd/ergodash/rev1 |
ergodox_infinity | input_club/ergodox_infinity |
ergotaco | gboards/ergotaco |
espectro | mechkeys/espectro |
felix | unikeyboard/felix |
four_banger | bpiphany/four_banger |
freyr | hnahkb/freyr |
geminate60 | weirdo/geminate60 |
georgi | gboards/georgi |
gergo | gboards/gergo |
getta25 | salicylic_acid3/getta25 |
gingham | yiancardesigns/gingham |
gurindam | ibnuda/gurindam |
halberd | kagizaraya/halberd |
hecomi/alpha | takashiski/hecomi/alpha |
hid_liber | bpiphany/hid_liber |
id67/default_rgb | idobao/id67/default_rgb |
id67/rgb | idobao/id67/rgb |
id80 | idobao/id80/v1 |
id87 | idobao/id87/v1 |
idobo | idobao/id75/v1 |
infinity60 | input_club/infinity60 |
ivy/rev1 | maple_computing/ivy/rev1 |
jisplit89 | salicylic_acid3/jisplit89 |
jnao | maple_computing/jnao |
just60 | ydkb/just60 |
kagamidget | yynmt/kagamidget |
kelowna/rgb64 | weirdo/kelowna/rgb64 |
kprepublic/bm65hsrgb_iso | kprepublic/bm65hsrgb_iso/rev1 |
kprepublic/bm68hsrgb | kprepublic/bm68hsrgb/rev1 |
k_type | input_club/k_type |
latin17rgb | latincompass/latin17rgb |
latin47ble | latincompass/latin47ble |
latin60rgb | latincompass/latin60rgb |
latin64ble | latincompass/latin64ble |
latin6rgb | latincompass/latin6rgb |
latinpadble | latincompass/latinpadble |
latinpad | latincompass/latinpad |
launchpad/rev1 | maple_computing/launchpad/rev1 |
lck75 | lyso1/lck75 |
le_chiffre | tominabox1/le_chiffre |
lefishe | lyso1/lefishe |
lets_split_eh/eh | maple_computing/lets_split_eh/eh |
ls_60 | weirdo/ls_60 |
m3n3van | matthewdias/m3n3van |
mechmini/v1 | mechkeys/mechmini/v1 |
mechmini/v2 | mechkeys/mechmini/v2 |
meira | woodkeys/meira |
meishi2 | biacco42/meishi2 |
meishi | biacco42/meishi |
minidox/rev1 | maple_computing/minidox/rev1 |
minim | matthewdias/minim |
mio | recompile_keys/mio |
model_v | matthewdias/model_v |
montex | idobao/montex/v1 |
nafuda | salicylic_acid3/nafuda |
naiping/np64 | weirdo/naiping/np64 |
naiping/nphhkb | weirdo/naiping/nphhkb |
naiping/npminila | weirdo/naiping/npminila |
naked48 | salicylic_acid3/naked48 |
naked60 | salicylic_acid3/naked60 |
naked64 | salicylic_acid3/naked64 |
namecard2x4 | takashiski/namecard2x4 |
nebula12 | spaceholdings/nebula12 |
nebula68b | spaceholdings/nebula68b |
nebula68 | spaceholdings/nebula68 |
niu_mini | kbdfans/niu_mini |
nk1 | novelkeys/nk1 |
nk65 | novelkeys/nk65 |
nk87 | novelkeys/nk87 |
nknl7en | salicylic_acid3/nknl7en |
nknl7jp | salicylic_acid3/nknl7jp |
nomu30 | recompile_keys/nomu30 |
novelpad | novelkeys/novelpad |
ogurec | drhigsby/ogurec |
otaku_split/rev0 | takashiski/otaku_split/rev0 |
otaku_split/rev1 | takashiski/otaku_split/rev1 |
owl8 | dailycraft/owl8 |
packrat | drhigsby/packrat |
pistachio_mp | rate/pistachio_mp |
pistachio_pro | rate/pistachio_pro |
pistachio | rate/pistachio |
plexus75 | checkerboards/plexus75 |
pursuit40 | checkerboards/pursuit40 |
qaz | tominabox1/qaz |
quark | checkerboards/quark |
rabbit_capture_plan | kakunpc/rabbit_capture_plan |
rainkeeb | rainkeebs/rainkeeb |
reviung33 | reviung/reviung33 |
reviung34 | reviung/reviung34 |
reviung39 | reviung/reviung39 |
reviung41 | reviung/reviung41 |
reviung53 | reviung/reviung53 |
reviung5 | reviung/reviung5 |
reviung61 | reviung/reviung61 |
runner3680/3x6 | omkbd/runner3680/3x6 |
runner3680/3x7 | omkbd/runner3680/3x7 |
runner3680/3x8 | omkbd/runner3680/3x8 |
runner3680/4x6 | omkbd/runner3680/4x6 |
runner3680/4x7 | omkbd/runner3680/4x7 |
runner3680/4x8 | omkbd/runner3680/4x8 |
runner3680/5x6_5x8 | omkbd/runner3680/5x6_5x8 |
runner3680/5x6 | omkbd/runner3680/5x6 |
runner3680/5x7 | omkbd/runner3680/5x7 |
runner3680/5x8 | omkbd/runner3680/5x8 |
scarletbandana | woodkeys/scarletbandana |
scythe | kagizaraya/scythe |
seigaiha | yiancardesigns/seigaiha |
setta21 | salicylic_acid3/setta21 |
space_space/rev1 | qpockets/space_space/rev1 |
space_space/rev2 | qpockets/space_space/rev2 |
spiderisland/winry25tc | winry/winry25tc |
splitreus62 | nacly/splitreus62 |
squiggle/rev1 | ibnuda/squiggle/rev1 |
standaside | edi/standaside |
steal_this_keyboard | obosob/steal_this_keyboard |
stella | hnahkb/stella |
suihankey/alpha | kakunpc/suihankey/alpha |
suihankey/rev1 | kakunpc/suihankey/rev1 |
suihankey/split | kakunpc/suihankey/split |
thedogkeyboard | kakunpc/thedogkeyboard |
the_ruler | maple_computing/the_ruler |
tiger910 | weirdo/tiger910 |
treadstone32 | marksard/treadstone32 |
treadstone48/rev1 | marksard/treadstone48/rev1 |
treadstone48/rev2 | marksard/treadstone48/rev2 |
txuu | matthewdias/txuu |
ua62 | nacly/ua62 |
underscore33/rev1 | tominabox1/underscore33/rev1 |
underscore33/rev2 | tominabox1/underscore33/rev2 |
vn66 | hnahkb/vn66 |
wallaby | kkatano/wallaby |
wanten | qpockets/wanten |
whitefox | input_club/whitefox |
wings42/rev1 | dailycraft/wings42/rev1 |
wings42/rev1_extkeys | dailycraft/wings42/rev1_extkeys |
wings42/rev2 | dailycraft/wings42/rev2 |
yasui | rainkeebs/yasui |
yd60mq | ymdk/yd60mq |
yd68 | ydkb/yd68 |
ymd75 | ymdk/ymd75 |
ymd96 | ymdk/ymd96 |
ymdk_np21 | ymdk/np21 |
yurei | kkatano/yurei |
zinc | 25keys/zinc |
zinc/rev1 | 25keys/zinc/rev1 |
zinc/reva | 25keys/zinc/reva |
Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:
- STM32L432
- STM32L442
QMK now has core-supplied support for the following device peripherals:
- IS31FL3742A
- IS31FL3743A
- IS31FL3745
- IS31FL3746A
- SN74x138
- mcp23018
Core:
- Initial pass at data driven new-keyboard subcommand (#12795)
- Don't send keyboard reports that propagate no changes to the host (#14065)
- Custom matrix lite support for split keyboards (#14674)
- Add sym_defer_pr debouncer type (#14948)
- Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A (#14989)
- New combo configuration options (#15083)
- IS31FL3733 driver for LED Matrix (#15088)
- Add open-drain GPIO support. (#15282)
- Make (un)register code functions weak (#15285)
- Split support for pointing devices. (#15304)
- Added cancel_key_lock function (#15321)
- Remove matrix_is_modified() and debounce_is_active() (#15349)
- Change default USB Polling rate to 1kHz (#15352)
- Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)
- Tidy up existing i2c_master implementations (#15376)
- Generalize Unicode defines (#15409)
- Added external spi flash driver. (#15419)
- Remove Deprecated USB Polling comment from vusb.c (#15420)
- Expand rotational range for PMW3360 Optical Sensor (#15431)
- ChibiOS SVN mirror script update (#15435)
- Refactor
bootloader_jump()
implementations (#15450) - added missing audio_off_user() callback (#15457)
- Migrate serial_uart usages to UART driver (#15479)
- Migrate RN42 to UART driver and refactor (#15492)
- pwm3360 driver cleanup and diff reduction to adns9800 (#15559)
- Advanced deferred_exec for core-side code. (#15579)
- Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY (#15635)
- Slight tidy up of keyboard task loop (#15725)
- Unify the key up/down behaviour of RGB keycodes (#15730)
- Add PMW3389 optical sensor Support (Updated) (#15740)
- ChibiOS: add support for HID Programmable Buttons (#15787)
- ChibiOS: shorten USB disconnect state on boot to 50ms (#15805)
- Add init function to clear previous matrix effect (#15815)
- Optimize initialization of PMW3360 Sensor (#15821)
- Add Pixel Flow RGB matrix effect (#15829)
- PMW3389 Revert Firmware load during Initilization (#15859)
- Combo
TAP_CODE_DELAY
andclear_weak_mods
(#15866) - Relocate matrix_scan_quantum tasks (#15882)
- Adjust mouse key defaults (#15883)
- RGB Matrix: Reload from EEPROM (#15923)
- Enable a default task throttle for split pointing. (#15925)
- Move mcp23018 driver to core (#15944)
- Relocate matrix_init_quantum content (#15953)
- Align location of some host led logic (#15954)
- Rename some Quantum keycodes (#15968)
- Migrate more makefile utilities to builddefs sub-directory (#16002)
- Various Makefile optimisations (#16015)
- Add support for STM32L432, STM32L442. (#16016)
- EEPROM refactor: remove
eeprom_teensy.c
by default, use transient instead (#16020) - Deprecate Split Transaction status field (#16023)
- Rip out old macro and action_function system (#16025)
- Add a script that simplifies running commands under docker. (#16028)
- Add support for Q-series on the ckled2001 LED driver (#16051)
- Remove unused suspend_idle (#16063)
- Initial migration of suspend callbacks (#16067)
- Add layout change callbacks to VIA (#16087)
- Rename
AdafruitBLE
toBluefruitLE
(#16127) - Update outputselect to use platform connected state API (#16185)
- Remove default pointing device driver. (#16190)
- Add SN74x138 demultiplexer driver (#16217)
- Standardise error output. (#16220)
- Followup to #16220, more test error output. (#16221)
- Misc size regression script improvements. (#16268)
- Align existing pca9555 driver to better match mcp23018 API (#16277)
- Size checks print out target firmware file instead (#16290)
CLI:
develop
changelog generator: use the PR title instead (#15537)develop
changelog generator: skip code formatting in listing (#16215)
Keyboards:
- Durgod: Increase scan rate by using wait_us timer (#14091)
- Add another GMMK Pro ANSI Keymap with custom RGB. (#14243)
- Parse USB device version BCD (#14580)
- Add vitoni keymap for GMMK Pro (ISO) (#15006)
- Move bm65hsrgb_iso and bm68hsrgb to rev1/ to prepare for updates to the boards (#15132)
- Convert ergoinu to SPLIT_KEYBOARD (#15305)
- Convert not_so_minidox to SPLIT_KEYBOARD (#15306)
- Added new handwired keyboard Wakizashi 40 (#15336)
- Convert ai03/orbit to SPLIT_KEYBOARD (#15340)
- Remove manual enable of LTO within user keymaps (#15378)
- Move to organization folder (#15481)
- Convert some more boards to Matrix Lite (#15489)
- Organize Reviung boards into a directory (#15636)
- move winry25tc to winry/ (#15637)
- Rename ymdk_np21 to np21 + move to ymdk vendor folder (#15641)
- move ymd96 to ymdk vendor folder (#15643)
- move ymd75 to ymdk vendor folder (#15645)
- move yd60mq to ymdk vendor folder (#15647)
- rename idobo to idobao/id75, move to vendor folder (#15661)
- move ID67 to IDOBAO vendor folder (#15662)
- move ID80 to IDOBAO vendor folder (#15665)
- move ID87 to IDOBAO vendor folder (#15667)
- move montex to IDOBAO vendor folder (#15668)
- move @yangdigi 's keyboards to a YDKB folder (#15681)
- move @kkatano 's keyboards to kkatano user folder (#15684)
- Sol 3 Keyboard from RGBKB (#15687)
- move cu24, cu75, cu80/v1 into capsunlocked folder (#15758)
- move mechkeys keyboards into the mechkeys/ vendor folder (#15760)
- move @lyso1 's boards into lyso1/ (#15767)
- move prototypist boards into vendor folder (#15780)
- move @yiancar 's boards into yiancardesigns/ (#15781)
- move novelkeys keyboards to vendor folder (#15783)
- move @weirdo-f 's keyboards into weirdo/ (#15785)
- move @marksard 's boards to marksard/ (#15786)
- move input club keyboards into vendor folder (#15788)
- move @monksoffunk 's boards into 25keys/ (#15789)
- move @Salicylic-acid3 's keyboards to salicylic-acid3/ (#15791)
- move @rainkeebs 's keyboards to rainkeebs/ (#15797)
- move standaside into edi/ (#15798)
- move @obosob 's boards into obosob/ (#15799)
- move @nacly 's boards to nacly/ (#15801)
- move @kakunpc 's keebs into kakunpc/ (#15814)
- move @qpocket 's keyboards to qpocket/ (#15827)
- BDN9 keymap (#15924)
- move @matthewdias 's keebs into matthewdias/ (#15991)
- move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 (#15992)
- Remove
action_function()
from LFKeyboards boards (#15993) - move @latincompass (aka @18438880 , @haierwangwei2005)'s boards to /latincompass (#16039)
- move g heavy industry boards into /gboards (#16040)
- move @drhigsby 's boards into /drhigsby (#16041)
- More keyboard rules.mk cleanups (#16044)
- move @That-Canadian 's boards into /maple_computing (#16050)
- move @takai 's keyboards into /recompile_keys (#16053)
- move @satt99 's comet46 to satt/ (#16059)
- move @ka2hiro 's boards into /kagizaraya (#16070)
- move @GlenPickle 's chimera* boards into a folder (#16072)
- move @yynmt 's boards into /yynmt (#16075)
- move @Biacco42 's keebs into /biacco42 (#16080)
- move unikeyboard boards to /unikeyboard (#16081)
- move four_banger to bpiphany (#16082)
- move @takashiski 's keebs into /takashiski (#16089)
- move hid_liber to /bpiphany (#16091)
- move spaceholdings boards into /spaceholdings (#16096)
- move @7-rate 's keebs to /rate (#16099)
- move @npspears 's boards into /checkerboards (#16100)
- move @vuhopkep 's keebs into /hnahkb (#16102)
- move @ibnuda 's keebs into /ibnuda (#16108)
- move @tominabox1 's keebs into /tominabox1 (#16109)
- move niu_mini to /kbdfans (#16112)
- move woodkeys.click keyboards to /woodkeys (#16113)
- move @omkbd 's boards to /omkbd (#16116)
- Overhaul Tractyl Manuform (#16134)
- Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via (#16254)
Keyboard fixes:
- Fix build failure for UT47 (#15483)
- Update grs_70ec to use newer custom matrix (#15609)
- fix compiler issue with Tractyl Manuform 4x6 (#15646)
- Fix CI. (#15828)
- Yet another bad
DEFAULT_FOLDER
fix. (#15904) - Fix build failures for
mschwingen/modelm
(#15987) rocketboard_16
: Fix mismatched LUT sizes (#15997)- Fix erroneous SRC for Clueboard 66 hotswap (#16007)
- Fix handwired/ms_sculpt_mobile default keymap (#16032)
- Re-org Hillside folders as new model prep. Fix default keymap. (#16128)
- Fix up default folder locations. Again. (#16135)
- Sol3 rgb fix (#16157)
- Add missing
BOOTLOADER
for a handful of boards (#16225) - Remove half implemented micronucleus bootloader support (#16252)
- Fixup bootloaders. (#16256)
- Fix idobao/id80/v3 compilation errors (#16280)
- Remove parent-relative paths from keyboards. (#16282)
- Bodge for helix build failures (#16376)
Others:
- Add a clarification to an error message (#15207)
- Clang-format tweaks (#15906)
- Add example implementations for compatible MCUs list (#15935)
- Add version.h to gitignore (#16222)
- Update keyboard mapping for all moved boards this cycle (#16312)
- Align docs to new-keyboard behaviour (#16357)
- Align new-keyboard with recent schema updates (#16378)
Bugs:
- Fixes potential wpm sampling overflow, along with code comment fixes (#15277)
- Add missing define for unicode common (#15416)
- Fix for SPI write timing in PMW3360 driver (#15519)
- Documentation Typo fix (#15538)
- fix a typo (#15557)
- Fix avr serial compile (#15589)
- More AVR GPIO compilation fixes. (#15592)
- Fix bug and code regression for Split Common (#15603)
- Include missing string.h include in split (#15606)
- Fixes for bootloader refactor build failures (#15638)
- Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. (#15682)
- Fix split pointing for analog joystick (#15691)
- Fix broken bootloader builds in develop. (#15880)
- Fix optical sensor firmware upload (#15919)
- Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions (#15938)
- fixed typo in orange HSV colors decalartion (#15976)
- Fix hack for chibiOS reset name (#15984)
- Fix right side ws2812 leds having two indices (#15985)
- Workaround in Makefile for recursive rule matching (#15988)
- Fix BACKLIGHT_CAPS_LOCK warning (#15999)
- Fix compilation issues for led indicators (#16001)
- ChibiOS timer fixes (#16017)
- Fix bootloader_jump for certain CTRL boards (#16026)
- Fix up issue with PROGMEM and hand_swap_config (#16027)
- Don't make EEPROM size assumptions with dynamic keymaps. (#16054)
- fix missed .noci in reviung move (#16107)
- Fix issues with Python Tests (#16162)
- Fixup multibuild filegen (#16166)
- Remove old .gitignore entry. Add more macOS junk exclusions. (#16167)
- Fixup builds so that teensy EEPROM knows which MCU it's targeting. (#16168)
- Create a build error if no bootloader is specified. (#16181)
- Ensure
version.h
is recreated each build. (#16188) - Add
custom
to list of valid bootloader types in info.json (#16228) - Fix
layer_state
restoration at end of dynamic macro feature #16208 (#16230) - Minor additions #12795 (#16276)
- Various fixes for matrix _RIGHT handling (#16292)
- Fix slashes in build_full_test.mk (#16300)
- ps2/avr: use the correct file name (#16316)
- Fix compilation of ChibiOS UART driver (#16348)
- Various fixes for new-keyboard (#16358)
- Allow NO_PIN within data driven configuration (#16359)