Deploying to gh-pages from master @ e793128991
🚀
parent
8f61ef471e
commit
496790c59e
@ -0,0 +1,489 @@ |
|||||||
|
# QMK Breaking Changes - 2022 February 26 Changelog |
||||||
|
|
||||||
|
## Notable Features :id=notable-features |
||||||
|
|
||||||
|
### Default USB Polling rate now 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/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](https://github.com/qmk/qmk_firmware/pull/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](feature_pointing_device.md) documentation for further configuration options. |
||||||
|
|
||||||
|
## Changes Requiring User Action :id=changes-requiring-user-action |
||||||
|
|
||||||
|
### Legacy macro and action_function system removed ([#16025](https://github.com/qmk/qmk_firmware/pull/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](feature_macros.md). |
||||||
|
|
||||||
|
### Create a build error if no bootloader is specified ([#16181](https://github.com/qmk/qmk_firmware/pull/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](https://github.com/qmk/qmk_firmware/pull/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 :id=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 :id=notable-core |
||||||
|
|
||||||
|
### New MCU Support :id=new-mcu-support |
||||||
|
|
||||||
|
Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants: |
||||||
|
|
||||||
|
* STM32L432 |
||||||
|
* STM32L442 |
||||||
|
|
||||||
|
### New Drivers |
||||||
|
|
||||||
|
QMK now has core-supplied support for the following device peripherals: |
||||||
|
|
||||||
|
#### LED |
||||||
|
|
||||||
|
* IS31FL3742A |
||||||
|
* IS31FL3743A |
||||||
|
* IS31FL3745 |
||||||
|
* IS31FL3746A |
||||||
|
|
||||||
|
#### GPIO |
||||||
|
|
||||||
|
* SN74x138 |
||||||
|
* mcp23018 |
||||||
|
|
||||||
|
--- |
||||||
|
|
||||||
|
## Full changelist |
||||||
|
|
||||||
|
Core: |
||||||
|
* Initial pass at data driven new-keyboard subcommand ([#12795](https://github.com/qmk/qmk_firmware/pull/12795)) |
||||||
|
* Don't send keyboard reports that propagate no changes to the host ([#14065](https://github.com/qmk/qmk_firmware/pull/14065)) |
||||||
|
* Custom matrix lite support for split keyboards ([#14674](https://github.com/qmk/qmk_firmware/pull/14674)) |
||||||
|
* Add sym_defer_pr debouncer type ([#14948](https://github.com/qmk/qmk_firmware/pull/14948)) |
||||||
|
* Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A ([#14989](https://github.com/qmk/qmk_firmware/pull/14989)) |
||||||
|
* New combo configuration options ([#15083](https://github.com/qmk/qmk_firmware/pull/15083)) |
||||||
|
* IS31FL3733 driver for LED Matrix ([#15088](https://github.com/qmk/qmk_firmware/pull/15088)) |
||||||
|
* Add open-drain GPIO support. ([#15282](https://github.com/qmk/qmk_firmware/pull/15282)) |
||||||
|
* Make (un)register code functions weak ([#15285](https://github.com/qmk/qmk_firmware/pull/15285)) |
||||||
|
* Split support for pointing devices. ([#15304](https://github.com/qmk/qmk_firmware/pull/15304)) |
||||||
|
* Added cancel_key_lock function ([#15321](https://github.com/qmk/qmk_firmware/pull/15321)) |
||||||
|
* Remove matrix_is_modified() and debounce_is_active() ([#15349](https://github.com/qmk/qmk_firmware/pull/15349)) |
||||||
|
* Change default USB Polling rate to 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/15352)) |
||||||
|
* Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK ([#15368](https://github.com/qmk/qmk_firmware/pull/15368)) |
||||||
|
* Tidy up existing i2c_master implementations ([#15376](https://github.com/qmk/qmk_firmware/pull/15376)) |
||||||
|
* Generalize Unicode defines ([#15409](https://github.com/qmk/qmk_firmware/pull/15409)) |
||||||
|
* Added external spi flash driver. ([#15419](https://github.com/qmk/qmk_firmware/pull/15419)) |
||||||
|
* Remove Deprecated USB Polling comment from vusb.c ([#15420](https://github.com/qmk/qmk_firmware/pull/15420)) |
||||||
|
* Expand rotational range for PMW3360 Optical Sensor ([#15431](https://github.com/qmk/qmk_firmware/pull/15431)) |
||||||
|
* ChibiOS SVN mirror script update ([#15435](https://github.com/qmk/qmk_firmware/pull/15435)) |
||||||
|
* Refactor `bootloader_jump()` implementations ([#15450](https://github.com/qmk/qmk_firmware/pull/15450)) |
||||||
|
* added missing audio_off_user() callback ([#15457](https://github.com/qmk/qmk_firmware/pull/15457)) |
||||||
|
* Migrate serial_uart usages to UART driver ([#15479](https://github.com/qmk/qmk_firmware/pull/15479)) |
||||||
|
* Migrate RN42 to UART driver and refactor ([#15492](https://github.com/qmk/qmk_firmware/pull/15492)) |
||||||
|
* pwm3360 driver cleanup and diff reduction to adns9800 ([#15559](https://github.com/qmk/qmk_firmware/pull/15559)) |
||||||
|
* Advanced deferred_exec for core-side code. ([#15579](https://github.com/qmk/qmk_firmware/pull/15579)) |
||||||
|
* Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY ([#15635](https://github.com/qmk/qmk_firmware/pull/15635)) |
||||||
|
* Slight tidy up of keyboard task loop ([#15725](https://github.com/qmk/qmk_firmware/pull/15725)) |
||||||
|
* Unify the key up/down behaviour of RGB keycodes ([#15730](https://github.com/qmk/qmk_firmware/pull/15730)) |
||||||
|
* Add PMW3389 optical sensor Support (Updated) ([#15740](https://github.com/qmk/qmk_firmware/pull/15740)) |
||||||
|
* ChibiOS: add support for HID Programmable Buttons ([#15787](https://github.com/qmk/qmk_firmware/pull/15787)) |
||||||
|
* ChibiOS: shorten USB disconnect state on boot to 50ms ([#15805](https://github.com/qmk/qmk_firmware/pull/15805)) |
||||||
|
* Add init function to clear previous matrix effect ([#15815](https://github.com/qmk/qmk_firmware/pull/15815)) |
||||||
|
* Optimize initialization of PMW3360 Sensor ([#15821](https://github.com/qmk/qmk_firmware/pull/15821)) |
||||||
|
* Add Pixel Flow RGB matrix effect ([#15829](https://github.com/qmk/qmk_firmware/pull/15829)) |
||||||
|
* PMW3389 Revert Firmware load during Initilization ([#15859](https://github.com/qmk/qmk_firmware/pull/15859)) |
||||||
|
* Combo `TAP_CODE_DELAY` and `clear_weak_mods` ([#15866](https://github.com/qmk/qmk_firmware/pull/15866)) |
||||||
|
* Relocate matrix_scan_quantum tasks ([#15882](https://github.com/qmk/qmk_firmware/pull/15882)) |
||||||
|
* Adjust mouse key defaults ([#15883](https://github.com/qmk/qmk_firmware/pull/15883)) |
||||||
|
* RGB Matrix: Reload from EEPROM ([#15923](https://github.com/qmk/qmk_firmware/pull/15923)) |
||||||
|
* Enable a default task throttle for split pointing. ([#15925](https://github.com/qmk/qmk_firmware/pull/15925)) |
||||||
|
* Move mcp23018 driver to core ([#15944](https://github.com/qmk/qmk_firmware/pull/15944)) |
||||||
|
* Relocate matrix_init_quantum content ([#15953](https://github.com/qmk/qmk_firmware/pull/15953)) |
||||||
|
* Align location of some host led logic ([#15954](https://github.com/qmk/qmk_firmware/pull/15954)) |
||||||
|
* Rename some Quantum keycodes ([#15968](https://github.com/qmk/qmk_firmware/pull/15968)) |
||||||
|
* Migrate more makefile utilities to builddefs sub-directory ([#16002](https://github.com/qmk/qmk_firmware/pull/16002)) |
||||||
|
* Various Makefile optimisations ([#16015](https://github.com/qmk/qmk_firmware/pull/16015)) |
||||||
|
* Add support for STM32L432, STM32L442. ([#16016](https://github.com/qmk/qmk_firmware/pull/16016)) |
||||||
|
* EEPROM refactor: remove `eeprom_teensy.c` by default, use transient instead ([#16020](https://github.com/qmk/qmk_firmware/pull/16020)) |
||||||
|
* Deprecate Split Transaction status field ([#16023](https://github.com/qmk/qmk_firmware/pull/16023)) |
||||||
|
* Rip out old macro and action_function system ([#16025](https://github.com/qmk/qmk_firmware/pull/16025)) |
||||||
|
* Add a script that simplifies running commands under docker. ([#16028](https://github.com/qmk/qmk_firmware/pull/16028)) |
||||||
|
* Add support for Q-series on the ckled2001 LED driver ([#16051](https://github.com/qmk/qmk_firmware/pull/16051)) |
||||||
|
* Remove unused suspend_idle ([#16063](https://github.com/qmk/qmk_firmware/pull/16063)) |
||||||
|
* Initial migration of suspend callbacks ([#16067](https://github.com/qmk/qmk_firmware/pull/16067)) |
||||||
|
* Add layout change callbacks to VIA ([#16087](https://github.com/qmk/qmk_firmware/pull/16087)) |
||||||
|
* Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127)) |
||||||
|
* Update outputselect to use platform connected state API ([#16185](https://github.com/qmk/qmk_firmware/pull/16185)) |
||||||
|
* Remove default pointing device driver. ([#16190](https://github.com/qmk/qmk_firmware/pull/16190)) |
||||||
|
* Add SN74x138 demultiplexer driver ([#16217](https://github.com/qmk/qmk_firmware/pull/16217)) |
||||||
|
* Standardise error output. ([#16220](https://github.com/qmk/qmk_firmware/pull/16220)) |
||||||
|
* Followup to #16220, more test error output. ([#16221](https://github.com/qmk/qmk_firmware/pull/16221)) |
||||||
|
* Misc size regression script improvements. ([#16268](https://github.com/qmk/qmk_firmware/pull/16268)) |
||||||
|
* Align existing pca9555 driver to better match mcp23018 API ([#16277](https://github.com/qmk/qmk_firmware/pull/16277)) |
||||||
|
* Size checks print out target firmware file instead ([#16290](https://github.com/qmk/qmk_firmware/pull/16290)) |
||||||
|
|
||||||
|
CLI: |
||||||
|
* `develop` changelog generator: use the PR title instead ([#15537](https://github.com/qmk/qmk_firmware/pull/15537)) |
||||||
|
* `develop` changelog generator: skip code formatting in listing ([#16215](https://github.com/qmk/qmk_firmware/pull/16215)) |
||||||
|
|
||||||
|
Keyboards: |
||||||
|
* Durgod: Increase scan rate by using wait_us timer ([#14091](https://github.com/qmk/qmk_firmware/pull/14091)) |
||||||
|
* Add another GMMK Pro ANSI Keymap with custom RGB. ([#14243](https://github.com/qmk/qmk_firmware/pull/14243)) |
||||||
|
* Parse USB device version BCD ([#14580](https://github.com/qmk/qmk_firmware/pull/14580)) |
||||||
|
* Add vitoni keymap for GMMK Pro (ISO) ([#15006](https://github.com/qmk/qmk_firmware/pull/15006)) |
||||||
|
* Move bm65hsrgb_iso and bm68hsrgb to rev1/ to prepare for updates to the boards ([#15132](https://github.com/qmk/qmk_firmware/pull/15132)) |
||||||
|
* Convert ergoinu to SPLIT_KEYBOARD ([#15305](https://github.com/qmk/qmk_firmware/pull/15305)) |
||||||
|
* Convert not_so_minidox to SPLIT_KEYBOARD ([#15306](https://github.com/qmk/qmk_firmware/pull/15306)) |
||||||
|
* Added new handwired keyboard Wakizashi 40 ([#15336](https://github.com/qmk/qmk_firmware/pull/15336)) |
||||||
|
* Convert ai03/orbit to SPLIT_KEYBOARD ([#15340](https://github.com/qmk/qmk_firmware/pull/15340)) |
||||||
|
* Remove manual enable of LTO within user keymaps ([#15378](https://github.com/qmk/qmk_firmware/pull/15378)) |
||||||
|
* Move to organization folder ([#15481](https://github.com/qmk/qmk_firmware/pull/15481)) |
||||||
|
* Convert some more boards to Matrix Lite ([#15489](https://github.com/qmk/qmk_firmware/pull/15489)) |
||||||
|
* Organize Reviung boards into a directory ([#15636](https://github.com/qmk/qmk_firmware/pull/15636)) |
||||||
|
* move winry25tc to winry/ ([#15637](https://github.com/qmk/qmk_firmware/pull/15637)) |
||||||
|
* Rename ymdk_np21 to np21 + move to ymdk vendor folder ([#15641](https://github.com/qmk/qmk_firmware/pull/15641)) |
||||||
|
* move ymd96 to ymdk vendor folder ([#15643](https://github.com/qmk/qmk_firmware/pull/15643)) |
||||||
|
* move ymd75 to ymdk vendor folder ([#15645](https://github.com/qmk/qmk_firmware/pull/15645)) |
||||||
|
* move yd60mq to ymdk vendor folder ([#15647](https://github.com/qmk/qmk_firmware/pull/15647)) |
||||||
|
* rename idobo to idobao/id75, move to vendor folder ([#15661](https://github.com/qmk/qmk_firmware/pull/15661)) |
||||||
|
* move ID67 to IDOBAO vendor folder ([#15662](https://github.com/qmk/qmk_firmware/pull/15662)) |
||||||
|
* move ID80 to IDOBAO vendor folder ([#15665](https://github.com/qmk/qmk_firmware/pull/15665)) |
||||||
|
* move ID87 to IDOBAO vendor folder ([#15667](https://github.com/qmk/qmk_firmware/pull/15667)) |
||||||
|
* move montex to IDOBAO vendor folder ([#15668](https://github.com/qmk/qmk_firmware/pull/15668)) |
||||||
|
* move @yangdigi 's keyboards to a YDKB folder ([#15681](https://github.com/qmk/qmk_firmware/pull/15681)) |
||||||
|
* move @kkatano 's keyboards to kkatano user folder ([#15684](https://github.com/qmk/qmk_firmware/pull/15684)) |
||||||
|
* Sol 3 Keyboard from RGBKB ([#15687](https://github.com/qmk/qmk_firmware/pull/15687)) |
||||||
|
* move cu24, cu75, cu80/v1 into capsunlocked folder ([#15758](https://github.com/qmk/qmk_firmware/pull/15758)) |
||||||
|
* move mechkeys keyboards into the mechkeys/ vendor folder ([#15760](https://github.com/qmk/qmk_firmware/pull/15760)) |
||||||
|
* move @lyso1 's boards into lyso1/ ([#15767](https://github.com/qmk/qmk_firmware/pull/15767)) |
||||||
|
* move prototypist boards into vendor folder ([#15780](https://github.com/qmk/qmk_firmware/pull/15780)) |
||||||
|
* move @yiancar 's boards into yiancardesigns/ ([#15781](https://github.com/qmk/qmk_firmware/pull/15781)) |
||||||
|
* move novelkeys keyboards to vendor folder ([#15783](https://github.com/qmk/qmk_firmware/pull/15783)) |
||||||
|
* move @weirdo-f 's keyboards into weirdo/ ([#15785](https://github.com/qmk/qmk_firmware/pull/15785)) |
||||||
|
* move @marksard 's boards to marksard/ ([#15786](https://github.com/qmk/qmk_firmware/pull/15786)) |
||||||
|
* move input club keyboards into vendor folder ([#15788](https://github.com/qmk/qmk_firmware/pull/15788)) |
||||||
|
* move @monksoffunk 's boards into 25keys/ ([#15789](https://github.com/qmk/qmk_firmware/pull/15789)) |
||||||
|
* move @Salicylic-acid3 's keyboards to salicylic-acid3/ ([#15791](https://github.com/qmk/qmk_firmware/pull/15791)) |
||||||
|
* move @rainkeebs 's keyboards to rainkeebs/ ([#15797](https://github.com/qmk/qmk_firmware/pull/15797)) |
||||||
|
* move standaside into edi/ ([#15798](https://github.com/qmk/qmk_firmware/pull/15798)) |
||||||
|
* move @obosob 's boards into obosob/ ([#15799](https://github.com/qmk/qmk_firmware/pull/15799)) |
||||||
|
* move @nacly 's boards to nacly/ ([#15801](https://github.com/qmk/qmk_firmware/pull/15801)) |
||||||
|
* move @kakunpc 's keebs into kakunpc/ ([#15814](https://github.com/qmk/qmk_firmware/pull/15814)) |
||||||
|
* move @qpocket 's keyboards to qpocket/ ([#15827](https://github.com/qmk/qmk_firmware/pull/15827)) |
||||||
|
* BDN9 keymap ([#15924](https://github.com/qmk/qmk_firmware/pull/15924)) |
||||||
|
* move @matthewdias 's keebs into matthewdias/ ([#15991](https://github.com/qmk/qmk_firmware/pull/15991)) |
||||||
|
* move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 ([#15992](https://github.com/qmk/qmk_firmware/pull/15992)) |
||||||
|
* Remove `action_function()` from LFKeyboards boards ([#15993](https://github.com/qmk/qmk_firmware/pull/15993)) |
||||||
|
* move @latincompass (aka @18438880 , @haierwangwei2005)'s boards to /latincompass ([#16039](https://github.com/qmk/qmk_firmware/pull/16039)) |
||||||
|
* move g heavy industry boards into /gboards ([#16040](https://github.com/qmk/qmk_firmware/pull/16040)) |
||||||
|
* move @drhigsby 's boards into /drhigsby ([#16041](https://github.com/qmk/qmk_firmware/pull/16041)) |
||||||
|
* More keyboard rules.mk cleanups ([#16044](https://github.com/qmk/qmk_firmware/pull/16044)) |
||||||
|
* move @That-Canadian 's boards into /maple_computing ([#16050](https://github.com/qmk/qmk_firmware/pull/16050)) |
||||||
|
* move @takai 's keyboards into /recompile_keys ([#16053](https://github.com/qmk/qmk_firmware/pull/16053)) |
||||||
|
* move @satt99 's comet46 to satt/ ([#16059](https://github.com/qmk/qmk_firmware/pull/16059)) |
||||||
|
* move @ka2hiro 's boards into /kagizaraya ([#16070](https://github.com/qmk/qmk_firmware/pull/16070)) |
||||||
|
* move @GlenPickle 's chimera* boards into a folder ([#16072](https://github.com/qmk/qmk_firmware/pull/16072)) |
||||||
|
* move @yynmt 's boards into /yynmt ([#16075](https://github.com/qmk/qmk_firmware/pull/16075)) |
||||||
|
* move @Biacco42 's keebs into /biacco42 ([#16080](https://github.com/qmk/qmk_firmware/pull/16080)) |
||||||
|
* move unikeyboard boards to /unikeyboard ([#16081](https://github.com/qmk/qmk_firmware/pull/16081)) |
||||||
|
* move four_banger to bpiphany ([#16082](https://github.com/qmk/qmk_firmware/pull/16082)) |
||||||
|
* move @takashiski 's keebs into /takashiski ([#16089](https://github.com/qmk/qmk_firmware/pull/16089)) |
||||||
|
* move hid_liber to /bpiphany ([#16091](https://github.com/qmk/qmk_firmware/pull/16091)) |
||||||
|
* move spaceholdings boards into /spaceholdings ([#16096](https://github.com/qmk/qmk_firmware/pull/16096)) |
||||||
|
* move @7-rate 's keebs to /rate ([#16099](https://github.com/qmk/qmk_firmware/pull/16099)) |
||||||
|
* move @npspears 's boards into /checkerboards ([#16100](https://github.com/qmk/qmk_firmware/pull/16100)) |
||||||
|
* move @vuhopkep 's keebs into /hnahkb ([#16102](https://github.com/qmk/qmk_firmware/pull/16102)) |
||||||
|
* move @ibnuda 's keebs into /ibnuda ([#16108](https://github.com/qmk/qmk_firmware/pull/16108)) |
||||||
|
* move @tominabox1 's keebs into /tominabox1 ([#16109](https://github.com/qmk/qmk_firmware/pull/16109)) |
||||||
|
* move niu_mini to /kbdfans ([#16112](https://github.com/qmk/qmk_firmware/pull/16112)) |
||||||
|
* move woodkeys.click keyboards to /woodkeys ([#16113](https://github.com/qmk/qmk_firmware/pull/16113)) |
||||||
|
* move @omkbd 's boards to /omkbd ([#16116](https://github.com/qmk/qmk_firmware/pull/16116)) |
||||||
|
* Overhaul Tractyl Manuform ([#16134](https://github.com/qmk/qmk_firmware/pull/16134)) |
||||||
|
* Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via ([#16254](https://github.com/qmk/qmk_firmware/pull/16254)) |
||||||
|
|
||||||
|
Keyboard fixes: |
||||||
|
* Fix build failure for UT47 ([#15483](https://github.com/qmk/qmk_firmware/pull/15483)) |
||||||
|
* Update grs_70ec to use newer custom matrix ([#15609](https://github.com/qmk/qmk_firmware/pull/15609)) |
||||||
|
* fix compiler issue with Tractyl Manuform 4x6 ([#15646](https://github.com/qmk/qmk_firmware/pull/15646)) |
||||||
|
* Fix CI. ([#15828](https://github.com/qmk/qmk_firmware/pull/15828)) |
||||||
|
* Yet another bad `DEFAULT_FOLDER` fix. ([#15904](https://github.com/qmk/qmk_firmware/pull/15904)) |
||||||
|
* Fix build failures for `mschwingen/modelm` ([#15987](https://github.com/qmk/qmk_firmware/pull/15987)) |
||||||
|
* `rocketboard_16`: Fix mismatched LUT sizes ([#15997](https://github.com/qmk/qmk_firmware/pull/15997)) |
||||||
|
* Fix erroneous SRC for Clueboard 66 hotswap ([#16007](https://github.com/qmk/qmk_firmware/pull/16007)) |
||||||
|
* Fix handwired/ms_sculpt_mobile default keymap ([#16032](https://github.com/qmk/qmk_firmware/pull/16032)) |
||||||
|
* Re-org Hillside folders as new model prep. Fix default keymap. ([#16128](https://github.com/qmk/qmk_firmware/pull/16128)) |
||||||
|
* Fix up default folder locations. Again. ([#16135](https://github.com/qmk/qmk_firmware/pull/16135)) |
||||||
|
* Sol3 rgb fix ([#16157](https://github.com/qmk/qmk_firmware/pull/16157)) |
||||||
|
* Add missing `BOOTLOADER` for a handful of boards ([#16225](https://github.com/qmk/qmk_firmware/pull/16225)) |
||||||
|
* Remove half implemented micronucleus bootloader support ([#16252](https://github.com/qmk/qmk_firmware/pull/16252)) |
||||||
|
* Fixup bootloaders. ([#16256](https://github.com/qmk/qmk_firmware/pull/16256)) |
||||||
|
* Fix idobao/id80/v3 compilation errors ([#16280](https://github.com/qmk/qmk_firmware/pull/16280)) |
||||||
|
* Remove parent-relative paths from keyboards. ([#16282](https://github.com/qmk/qmk_firmware/pull/16282)) |
||||||
|
* Bodge for helix build failures ([#16376](https://github.com/qmk/qmk_firmware/pull/16376)) |
||||||
|
|
||||||
|
Others: |
||||||
|
* Add a clarification to an error message ([#15207](https://github.com/qmk/qmk_firmware/pull/15207)) |
||||||
|
* Clang-format tweaks ([#15906](https://github.com/qmk/qmk_firmware/pull/15906)) |
||||||
|
* Add example implementations for compatible MCUs list ([#15935](https://github.com/qmk/qmk_firmware/pull/15935)) |
||||||
|
* Add version.h to gitignore ([#16222](https://github.com/qmk/qmk_firmware/pull/16222)) |
||||||
|
* Update keyboard mapping for all moved boards this cycle ([#16312](https://github.com/qmk/qmk_firmware/pull/16312)) |
||||||
|
* Align docs to new-keyboard behaviour ([#16357](https://github.com/qmk/qmk_firmware/pull/16357)) |
||||||
|
* Align new-keyboard with recent schema updates ([#16378](https://github.com/qmk/qmk_firmware/pull/16378)) |
||||||
|
|
||||||
|
Bugs: |
||||||
|
* Fixes potential wpm sampling overflow, along with code comment fixes ([#15277](https://github.com/qmk/qmk_firmware/pull/15277)) |
||||||
|
* Add missing define for unicode common ([#15416](https://github.com/qmk/qmk_firmware/pull/15416)) |
||||||
|
* Fix for SPI write timing in PMW3360 driver ([#15519](https://github.com/qmk/qmk_firmware/pull/15519)) |
||||||
|
* Documentation Typo fix ([#15538](https://github.com/qmk/qmk_firmware/pull/15538)) |
||||||
|
* fix a typo ([#15557](https://github.com/qmk/qmk_firmware/pull/15557)) |
||||||
|
* Fix avr serial compile ([#15589](https://github.com/qmk/qmk_firmware/pull/15589)) |
||||||
|
* More AVR GPIO compilation fixes. ([#15592](https://github.com/qmk/qmk_firmware/pull/15592)) |
||||||
|
* Fix bug and code regression for Split Common ([#15603](https://github.com/qmk/qmk_firmware/pull/15603)) |
||||||
|
* Include missing string.h include in split ([#15606](https://github.com/qmk/qmk_firmware/pull/15606)) |
||||||
|
* Fixes for bootloader refactor build failures ([#15638](https://github.com/qmk/qmk_firmware/pull/15638)) |
||||||
|
* Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. ([#15682](https://github.com/qmk/qmk_firmware/pull/15682)) |
||||||
|
* Fix split pointing for analog joystick ([#15691](https://github.com/qmk/qmk_firmware/pull/15691)) |
||||||
|
* Fix broken bootloader builds in develop. ([#15880](https://github.com/qmk/qmk_firmware/pull/15880)) |
||||||
|
* Fix optical sensor firmware upload ([#15919](https://github.com/qmk/qmk_firmware/pull/15919)) |
||||||
|
* Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions ([#15938](https://github.com/qmk/qmk_firmware/pull/15938)) |
||||||
|
* fixed typo in orange HSV colors decalartion ([#15976](https://github.com/qmk/qmk_firmware/pull/15976)) |
||||||
|
* Fix hack for chibiOS reset name ([#15984](https://github.com/qmk/qmk_firmware/pull/15984)) |
||||||
|
* Fix right side ws2812 leds having two indices ([#15985](https://github.com/qmk/qmk_firmware/pull/15985)) |
||||||
|
* Workaround in Makefile for recursive rule matching ([#15988](https://github.com/qmk/qmk_firmware/pull/15988)) |
||||||
|
* Fix BACKLIGHT_CAPS_LOCK warning ([#15999](https://github.com/qmk/qmk_firmware/pull/15999)) |
||||||
|
* Fix compilation issues for led indicators ([#16001](https://github.com/qmk/qmk_firmware/pull/16001)) |
||||||
|
* ChibiOS timer fixes ([#16017](https://github.com/qmk/qmk_firmware/pull/16017)) |
||||||
|
* Fix bootloader_jump for certain CTRL boards ([#16026](https://github.com/qmk/qmk_firmware/pull/16026)) |
||||||
|
* Fix up issue with PROGMEM and hand_swap_config ([#16027](https://github.com/qmk/qmk_firmware/pull/16027)) |
||||||
|
* Don't make EEPROM size assumptions with dynamic keymaps. ([#16054](https://github.com/qmk/qmk_firmware/pull/16054)) |
||||||
|
* fix missed .noci in reviung move ([#16107](https://github.com/qmk/qmk_firmware/pull/16107)) |
||||||
|
* Fix issues with Python Tests ([#16162](https://github.com/qmk/qmk_firmware/pull/16162)) |
||||||
|
* Fixup multibuild filegen ([#16166](https://github.com/qmk/qmk_firmware/pull/16166)) |
||||||
|
* Remove old .gitignore entry. Add more macOS junk exclusions. ([#16167](https://github.com/qmk/qmk_firmware/pull/16167)) |
||||||
|
* Fixup builds so that teensy EEPROM knows which MCU it's targeting. ([#16168](https://github.com/qmk/qmk_firmware/pull/16168)) |
||||||
|
* Create a build error if no bootloader is specified. ([#16181](https://github.com/qmk/qmk_firmware/pull/16181)) |
||||||
|
* Ensure `version.h` is recreated each build. ([#16188](https://github.com/qmk/qmk_firmware/pull/16188)) |
||||||
|
* Add `custom` to list of valid bootloader types in info.json ([#16228](https://github.com/qmk/qmk_firmware/pull/16228)) |
||||||
|
* Fix `layer_state` restoration at end of dynamic macro feature #16208 ([#16230](https://github.com/qmk/qmk_firmware/pull/16230)) |
||||||
|
* Minor additions #12795 ([#16276](https://github.com/qmk/qmk_firmware/pull/16276)) |
||||||
|
* Various fixes for matrix _RIGHT handling ([#16292](https://github.com/qmk/qmk_firmware/pull/16292)) |
||||||
|
* Fix slashes in build_full_test.mk ([#16300](https://github.com/qmk/qmk_firmware/pull/16300)) |
||||||
|
* ps2/avr: use the correct file name ([#16316](https://github.com/qmk/qmk_firmware/pull/16316)) |
||||||
|
* Fix compilation of ChibiOS UART driver ([#16348](https://github.com/qmk/qmk_firmware/pull/16348)) |
||||||
|
* Various fixes for new-keyboard ([#16358](https://github.com/qmk/qmk_firmware/pull/16358)) |
||||||
|
* Allow NO_PIN within data driven configuration ([#16359](https://github.com/qmk/qmk_firmware/pull/16359)) |
@ -0,0 +1,24 @@ |
|||||||
|
# FLASH Driver Configuration :id=flash-driver-configuration |
||||||
|
|
||||||
|
The FLASH driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present. |
||||||
|
|
||||||
|
Driver | Description |
||||||
|
-----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
||||||
|
`FLASH_DRIVER = spi` | Supports writing to almost all NOR Flash chips. See the driver section below. |
||||||
|
|
||||||
|
|
||||||
|
## SPI FLASH Driver Configuration :id=spi-flash-driver-configuration |
||||||
|
|
||||||
|
Currently QMK supports almost all NOR Flash chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h: |
||||||
|
|
||||||
|
`config.h` override | Description | Default Value |
||||||
|
-----------------------------------------------|--------------------------------------------------------------------------------------|----------------- |
||||||
|
`#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN` | SPI Slave select pin in order to inform that the FLASH is currently being addressed | _none_ |
||||||
|
`#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR` | Clock divisor used to divide the peripheral clock to derive the SPI frequency | `8` |
||||||
|
`#define EXTERNAL_FLASH_PAGE_SIZE` | The Page size of the FLASH in bytes, as specified in the datasheet | `256` |
||||||
|
`#define EXTERNAL_FLASH_SECTOR_SIZE` | The sector size of the FLASH in bytes, as specified in the datasheet | `(4 * 1024)` |
||||||
|
`#define EXTERNAL_FLASH_BLOCK_SIZE` | The block size of the FLASH in bytes, as specified in the datasheet | `(64 * 1024)` |
||||||
|
`#define EXTERNAL_FLASH_SIZE` | The total size of the FLASH in bytes, as specified in the datasheet | `(512 * 1024)` |
||||||
|
`#define EXTERNAL_FLASH_ADDRESS_SIZE` | The Flash address size in bytes, as specified in datasheet | `3` |
||||||
|
|
||||||
|
!> All the above default configurations are based on MX25L4006E NOR Flash. |
@ -1,182 +0,0 @@ |
|||||||
# Keyboards with AVR Processors |
|
||||||
|
|
||||||
This page describes the support for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCUs that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today. |
|
||||||
|
|
||||||
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK. |
|
||||||
|
|
||||||
## Adding Your AVR Keyboard to QMK |
|
||||||
|
|
||||||
QMK has a number of features to simplify working with AVR keyboards. For most keyboards you don't have to write a single line of code. To get started, run `qmk new-keyboard`: |
|
||||||
|
|
||||||
``` |
|
||||||
$ qmk new-keyboard |
|
||||||
Ψ Generating a new QMK keyboard directory |
|
||||||
|
|
||||||
Keyboard Name: mycoolkeeb |
|
||||||
Keyboard Type: |
|
||||||
1. avr |
|
||||||
2. ps2avrgb |
|
||||||
Please enter your choice: [1] |
|
||||||
Your Name: [John Smith] |
|
||||||
Ψ Copying base template files... |
|
||||||
Ψ Copying avr template files... |
|
||||||
Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]... |
|
||||||
Ψ Replacing %YEAR% with 2021... |
|
||||||
Ψ Replacing %KEYBOARD% with mycoolkeeb... |
|
||||||
Ψ Replacing %YOUR_NAME% with John Smith... |
|
||||||
|
|
||||||
Ψ Created a new keyboard called mycoolkeeb. |
|
||||||
Ψ To start working on things, `cd` into keyboards/mycoolkeeb, |
|
||||||
Ψ or open the directory in your preferred text editor. |
|
||||||
``` |
|
||||||
|
|
||||||
This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard. |
|
||||||
|
|
||||||
## `readme.md` |
|
||||||
|
|
||||||
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](https://imgur.com) to host the images. |
|
||||||
|
|
||||||
## `<keyboard>.c` |
|
||||||
|
|
||||||
This is where all the custom logic for your keyboard goes. Many keyboards do not need to put anything at all in here. You can learn more about writing custom logic in [Custom Quantum Functions](custom_quantum_functions.md). |
|
||||||
|
|
||||||
## `<keyboard>.h` |
|
||||||
|
|
||||||
This is the file you define your [Layout Macro(s)](feature_layouts.md) in. At minimum you should have a `#define LAYOUT` for your keyboard that looks something like this: |
|
||||||
|
|
||||||
```c |
|
||||||
#define LAYOUT( \ |
|
||||||
k00, k01, k02, \ |
|
||||||
k10, k11 \ |
|
||||||
) { \ |
|
||||||
{ k00, k01, k02 }, \ |
|
||||||
{ k10, KC_NO, k11 }, \ |
|
||||||
} |
|
||||||
``` |
|
||||||
|
|
||||||
The first half of the `LAYOUT` pre-processor macro defines the physical arrangement of keys. The second half of the macro defines the matrix the switches are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix. |
|
||||||
|
|
||||||
Each of the `k__` variables needs to be unique, and typically they follow the format `k<row><col>`. |
|
||||||
|
|
||||||
The physical matrix (the second half) must have a number of rows equaling `MATRIX_ROWS`, and each row must have exactly `MATRIX_COLS` elements in it. If you do not have this many physical keys you can use `KC_NO` to fill in the blank spots. |
|
||||||
|
|
||||||
## `config.h` |
|
||||||
|
|
||||||
The `config.h` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list there. For a complete overview of available options see the [Config Options](config_options.md) page. |
|
||||||
|
|
||||||
### Hardware Configuration |
|
||||||
|
|
||||||
|
|
||||||
At the top of the `config.h` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `VENDOR_ID` as `0xFEED`. For the `PRODUCT_ID` you should pick a number that is not yet in use. |
|
||||||
|
|
||||||
Do change the `MANUFACTURER` and `PRODUCT` lines to accurately reflect your keyboard. |
|
||||||
|
|
||||||
```c |
|
||||||
#define VENDOR_ID 0xFEED |
|
||||||
#define PRODUCT_ID 0x6060 |
|
||||||
#define DEVICE_VER 0x0001 |
|
||||||
#define MANUFACTURER You |
|
||||||
#define PRODUCT my_awesome_keyboard |
|
||||||
``` |
|
||||||
|
|
||||||
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `MANUFACTURER` and `PRODUCT` if the list does not contain that `VENDOR_ID` / `PRODUCT_ID`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in. |
|
||||||
|
|
||||||
### Keyboard Matrix Configuration |
|
||||||
|
|
||||||
The next section of the `config.h` file deals with your keyboard's matrix. The first thing you should set is the matrix's size. This is usually, but not always, the same number of rows and columns as the physical key arrangement. |
|
||||||
|
|
||||||
```c |
|
||||||
#define MATRIX_ROWS 2 |
|
||||||
#define MATRIX_COLS 3 |
|
||||||
``` |
|
||||||
|
|
||||||
Once you've defined the size of your matrix you need to define which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins: |
|
||||||
|
|
||||||
```c |
|
||||||
#define MATRIX_ROW_PINS { D0, D5 } |
|
||||||
#define MATRIX_COL_PINS { F1, F0, B0 } |
|
||||||
#define UNUSED_PINS |
|
||||||
``` |
|
||||||
|
|
||||||
The number of `MATRIX_ROW_PINS` entries must be the same as the number you assigned to `MATRIX_ROWS`, and likewise for `MATRIX_COL_PINS` and `MATRIX_COLS`. You do not have to specify `UNUSED_PINS`, but you can if you want to document what pins are open. |
|
||||||
|
|
||||||
Finally, you can specify the direction your diodes point. This can be `COL2ROW` or `ROW2COL`. |
|
||||||
|
|
||||||
```c |
|
||||||
#define DIODE_DIRECTION COL2ROW |
|
||||||
``` |
|
||||||
|
|
||||||
#### Direct Pin Matrix |
|
||||||
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `DIRECT_PINS`. The mapping defines the pins of each switch in rows and columns, from left to right. Must conform to the sizes within `MATRIX_ROWS` and `MATRIX_COLS`, use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `DIODE_DIRECTION`, `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`. |
|
||||||
|
|
||||||
```c |
|
||||||
// #define MATRIX_ROW_PINS { D0, D5 } |
|
||||||
// #define MATRIX_COL_PINS { F1, F0, B0 } |
|
||||||
#define DIRECT_PINS { \ |
|
||||||
{ F1, E6, B0, B2, B3 }, \ |
|
||||||
{ F5, F0, B1, B7, D2 }, \ |
|
||||||
{ F6, F7, C7, D5, D3 }, \ |
|
||||||
{ B5, C6, B6, NO_PIN, NO_PIN } \ |
|
||||||
} |
|
||||||
#define UNUSED_PINS |
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL */ |
|
||||||
//#define DIODE_DIRECTION |
|
||||||
``` |
|
||||||
|
|
||||||
### Backlight Configuration |
|
||||||
|
|
||||||
QMK supports backlighting on most GPIO pins. A select few of these can be driven by the MCU in hardware. For more details see the [Backlight Documentation](feature_backlight.md). |
|
||||||
|
|
||||||
```c |
|
||||||
#define BACKLIGHT_PIN B7 |
|
||||||
#define BACKLIGHT_LEVELS 3 |
|
||||||
#define BACKLIGHT_BREATHING |
|
||||||
#define BREATHING_PERIOD 6 |
|
||||||
``` |
|
||||||
|
|
||||||
### Other Configuration Options |
|
||||||
|
|
||||||
There are a lot of features that can be configured or tuned in `config.h`. You should see the [Config Options](config_options.md) page for more details. |
|
||||||
|
|
||||||
## `rules.mk` |
|
||||||
|
|
||||||
You use the `rules.mk` file to tell QMK what files to build and what features to enable. If you are building around an atmega32u4 you can largely leave these defaults alone. If you are using another MCU you may have to tweak some parameters. |
|
||||||
|
|
||||||
### MCU Options |
|
||||||
|
|
||||||
These options tell the build system what CPU to build for. Be very careful if you change any of these settings, you can render your keyboard inoperable. |
|
||||||
|
|
||||||
```make |
|
||||||
MCU = atmega32u4 |
|
||||||
F_CPU = 16000000 |
|
||||||
ARCH = AVR8 |
|
||||||
F_USB = $(F_CPU) |
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT |
|
||||||
``` |
|
||||||
|
|
||||||
### Bootloaders |
|
||||||
|
|
||||||
The bootloader is a special section of your MCU that allows you to upgrade the code stored on the MCU. Think of it like a Rescue Partition for your keyboard. |
|
||||||
|
|
||||||
#### Teensy Bootloader Example |
|
||||||
|
|
||||||
```make |
|
||||||
BOOTLOADER = halfkay |
|
||||||
``` |
|
||||||
|
|
||||||
#### Atmel DFU Loader Example |
|
||||||
|
|
||||||
```make |
|
||||||
BOOTLOADER = atmel-dfu |
|
||||||
``` |
|
||||||
|
|
||||||
#### Pro Micro Bootloader Example |
|
||||||
|
|
||||||
```make |
|
||||||
BOOTLOADER = caterina |
|
||||||
``` |
|
||||||
|
|
||||||
### Build Options |
|
||||||
|
|
||||||
There are a number of features that can be turned on or off in `rules.mk`. See the [Config Options](config_options.md#feature-options) page for a detailed list and description. |
|
@ -0,0 +1,163 @@ |
|||||||
|
# Adding Your Keyboard to QMK |
||||||
|
|
||||||
|
This page describes the support for [Compatible Microcontrollers](compatible_microcontrollers.md) in QMK. |
||||||
|
|
||||||
|
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK. |
||||||
|
|
||||||
|
|
||||||
|
QMK has a number of features to simplify working with keyboards. For most, you don't have to write a single line of code. To get started, run `qmk new-keyboard`: |
||||||
|
|
||||||
|
``` |
||||||
|
$ qmk new-keyboard |
||||||
|
Ψ Generating a new QMK keyboard directory |
||||||
|
|
||||||
|
Name Your Keyboard Project |
||||||
|
For more infomation, see: |
||||||
|
https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject |
||||||
|
|
||||||
|
keyboard Name? mycoolkeeb |
||||||
|
|
||||||
|
Attribution |
||||||
|
Used for maintainer, copyright, etc |
||||||
|
|
||||||
|
Your GitHub Username? [jsmith] |
||||||
|
|
||||||
|
More Attribution |
||||||
|
Used for maintainer, copyright, etc |
||||||
|
|
||||||
|
Your Real Name? [John Smith] |
||||||
|
|
||||||
|
Pick Base Layout |
||||||
|
As a starting point, one of the common layouts can be used to bootstrap the process |
||||||
|
|
||||||
|
Default Layout? |
||||||
|
1. 60_ansi |
||||||
|
... |
||||||
|
50. tkl_iso |
||||||
|
51. none of the above |
||||||
|
Please enter your choice: [51] |
||||||
|
|
||||||
|
What Powers Your Project |
||||||
|
For more infomation, see: |
||||||
|
https://docs.qmk.fm/#/compatible_microcontrollers |
||||||
|
|
||||||
|
MCU? |
||||||
|
1. atmega32u4 |
||||||
|
... |
||||||
|
22. STM32F303 |
||||||
|
Please enter your choice: [12] |
||||||
|
Ψ Created a new keyboard called mycoolkeeb. |
||||||
|
Ψ To start working on things, `cd` into keyboards/mycoolkeeb, |
||||||
|
Ψ or open the directory in your preferred text editor. |
||||||
|
Ψ And build with qmk compile -kb mycoolkeeb -km default. |
||||||
|
``` |
||||||
|
|
||||||
|
This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard. |
||||||
|
|
||||||
|
## `readme.md` |
||||||
|
|
||||||
|
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](https://imgur.com) to host the images. |
||||||
|
|
||||||
|
## `info.json` |
||||||
|
|
||||||
|
The `info.json` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the [Data Driven Configuration Options](reference_info_json.md) page. |
||||||
|
|
||||||
|
### Hardware Configuration |
||||||
|
|
||||||
|
At the top of the `info.json` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `usb.vid` as `0xFEED`. For the `usb.pid` you should pick a number that is not yet in use. |
||||||
|
|
||||||
|
Do change the `manufacturer` and `keyboard_name` lines to accurately reflect your keyboard. |
||||||
|
|
||||||
|
```json |
||||||
|
"keyboard_name": "my_awesome_keyboard", |
||||||
|
"maintainer": "You", |
||||||
|
"usb": { |
||||||
|
"vid": "0xFEED", |
||||||
|
"pid": "0x0000", |
||||||
|
"device_version": "1.0.0" |
||||||
|
}, |
||||||
|
``` |
||||||
|
|
||||||
|
?> Windows and macOS will display the `manufacturer` and `keyboard_name` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `manufacturer` and `keyboard_name` if the list does not contain that `usb.vid` / `usb.pid`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in. |
||||||
|
|
||||||
|
|
||||||
|
### Matrix Configuration |
||||||
|
|
||||||
|
The next section of the `info` file deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins: |
||||||
|
|
||||||
|
```json |
||||||
|
"matrix_pins": { |
||||||
|
"cols": ["C1", "C2", "C3", "C4"], |
||||||
|
"rows": ["D1", "D2", "D3", "D4"] |
||||||
|
}, |
||||||
|
``` |
||||||
|
|
||||||
|
The size of the `matrix_pins.cols` and `matrix_pins.rows` arrays infer the size of the matrix (previously `MATRIX_ROWS` and `MATRIX_COLS`). |
||||||
|
|
||||||
|
Finally, you can specify the direction your diodes point. This can be `COL2ROW` or `ROW2COL`. |
||||||
|
|
||||||
|
```json |
||||||
|
"diode_direction": "ROW2COL", |
||||||
|
``` |
||||||
|
|
||||||
|
#### Direct Pin Matrix |
||||||
|
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `matrix_pins.direct`. The mapping defines the pins of each switch in rows and columns, from left to right. The size of the `matrix_pins.direct` array infers the size of the matrix. Use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `diode_direction`, `matrix_pins.cols` and `matrix_pins.rows`. |
||||||
|
|
||||||
|
```json |
||||||
|
"matrix_pins": { |
||||||
|
"direct": [ |
||||||
|
["F1", "E6", "B0", "B2", "B3" ], |
||||||
|
["F5", "F0", "B1", "B7", "D2" ], |
||||||
|
["F6", "F7", "C7", "D5", "D3" ], |
||||||
|
["B5", "C6", "B6", "NO_PIN", "NO_PIN"] |
||||||
|
] |
||||||
|
}, |
||||||
|
``` |
||||||
|
|
||||||
|
### Layout macros |
||||||
|
|
||||||
|
Next is configuring Layout Macro(s). These define the physical arrangement of keys, and its position within the matrix that a switch are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix. |
||||||
|
|
||||||
|
```json |
||||||
|
"layouts": { |
||||||
|
"LAYOUT_ortho_4x4": { |
||||||
|
"layout": [ |
||||||
|
{ "matrix": [0, 0], "x": 0, "y": 0 }, |
||||||
|
{ "matrix": [0, 1], "x": 1, "y": 0 }, |
||||||
|
{ "matrix": [0, 2], "x": 2, "y": 0 }, |
||||||
|
{ "matrix": [0, 3], "x": 3, "y": 0 }, |
||||||
|
{ "matrix": [1, 0], "x": 0, "y": 1 }, |
||||||
|
{ "matrix": [1, 1], "x": 1, "y": 1 }, |
||||||
|
{ "matrix": [1, 2], "x": 2, "y": 1 }, |
||||||
|
{ "matrix": [1, 3], "x": 3, "y": 1 }, |
||||||
|
{ "matrix": [2, 0], "x": 0, "y": 2 }, |
||||||
|
{ "matrix": [2, 1], "x": 1, "y": 2 }, |
||||||
|
{ "matrix": [2, 2], "x": 2, "y": 2 }, |
||||||
|
{ "matrix": [2, 3], "x": 3, "y": 2 }, |
||||||
|
{ "matrix": [3, 0], "x": 0, "y": 3 }, |
||||||
|
{ "matrix": [3, 1], "x": 1, "y": 3 }, |
||||||
|
{ "matrix": [3, 2], "x": 2, "y": 3 }, |
||||||
|
{ "matrix": [3, 3], "x": 3, "y": 3 } |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
``` |
||||||
|
|
||||||
|
In the above example, |
||||||
|
|
||||||
|
* `LAYOUT_ortho_4x4` defines the name of the layout macro |
||||||
|
* It must conform to [hardware_keyboard_guidelines.md#ltkeyboard_namehgt] |
||||||
|
* `"matrix": [0, 0]` defines the electrical position |
||||||
|
|
||||||
|
## Additional Configuration |
||||||
|
|
||||||
|
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config.md). The following sections cover the process for when an `info.json` option is unavailable. |
||||||
|
|
||||||
|
### Configuration Options |
||||||
|
|
||||||
|
For available options for `config.h`, you should see the [Config Options](config_options.md) page for more details. |
||||||
|
|
||||||
|
### Build Options |
||||||
|
|
||||||
|
For available options for `rules.mk`, see the [Config Options](config_options.md#feature-options) page for a detailed list and description. |
Loading…
Reference in new issue