#QMK Breaking Changes - 2022 February 26 Changelog
#Notable Features {#notable-features}
#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.
#Changes Requiring User Action {#changes-requiring-user-action}
#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
within rules.mk
bootloader
within info.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.
#Updated Keyboard Codebases {#updated-keyboard-codebases}
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 |
#Notable core changes {#notable-core}
#New MCU Support {#new-mcu-support}
Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:
#New Drivers
QMK now has core-supplied support for the following device peripherals:
#LED
- IS31FL3742A
- IS31FL3743A
- IS31FL3745
- IS31FL3746A
#GPIO
#Full changelist
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
and clear_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
to BluefruitLE
(#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)