summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/ChangeLog/20220528.md216
-rw-r--r--docs/_summary.md22
-rw-r--r--docs/breaking_changes.md19
-rw-r--r--docs/breaking_changes_history.md1
-rw-r--r--docs/cli_commands.md12
-rw-r--r--docs/compatible_microcontrollers.md1
-rw-r--r--docs/config_options.md2
-rw-r--r--docs/data_driven_config.md5
-rw-r--r--docs/feature_caps_word.md156
-rw-r--r--docs/feature_encoders.md36
-rw-r--r--docs/feature_haptic_feedback.md32
-rw-r--r--docs/feature_hd44780.md345
-rw-r--r--docs/feature_joystick.md2
-rw-r--r--docs/feature_midi.md6
-rw-r--r--docs/feature_pointing_device.md32
-rw-r--r--docs/feature_rgb_matrix.md14
-rw-r--r--docs/feature_rgblight.md13
-rw-r--r--docs/feature_swap_hands.md13
-rw-r--r--docs/feature_unicode.md11
-rw-r--r--docs/flashing.md11
-rw-r--r--docs/gpio_control.md (renamed from docs/internals_gpio_control.md)0
-rw-r--r--docs/internals/defines.md (renamed from docs/internals_defines.md)0
-rw-r--r--docs/internals/input_callback_reg.md (renamed from docs/internals_input_callback_reg.md)0
-rw-r--r--docs/internals/midi_device.md (renamed from docs/internals_midi_device.md)0
-rw-r--r--docs/internals/midi_device_setup_process.md (renamed from docs/internals_midi_device_setup_process.md)0
-rw-r--r--docs/internals/midi_util.md (renamed from docs/internals_midi_util.md)0
-rw-r--r--docs/internals/send_functions.md (renamed from docs/internals_send_functions.md)0
-rw-r--r--docs/internals/sysex_tools.md (renamed from docs/internals_sysex_tools.md)0
-rw-r--r--docs/ja/_summary.md16
-rw-r--r--docs/ja/feature_unicode.md11
-rw-r--r--docs/ja/gpio_control.md (renamed from docs/ja/internals_gpio_control.md)4
-rw-r--r--docs/ja/internals_defines.md78
-rw-r--r--docs/ja/internals_input_callback_reg.md173
-rw-r--r--docs/ja/internals_midi_device.md148
-rw-r--r--docs/ja/internals_midi_device_setup_process.md36
-rw-r--r--docs/ja/internals_midi_util.md59
-rw-r--r--docs/ja/internals_send_functions.md246
-rw-r--r--docs/ja/internals_sysex_tools.md66
-rw-r--r--docs/ja/proton_c_conversion.md2
-rw-r--r--docs/keycodes.md20
-rw-r--r--docs/newbs_getting_started.md2
-rw-r--r--docs/proton_c_conversion.md2
-rw-r--r--docs/quantum_keycodes.md12
-rw-r--r--docs/quantum_painter.md705
-rw-r--r--docs/quantum_painter_qff.md103
-rw-r--r--docs/quantum_painter_qgf.md178
-rw-r--r--docs/quantum_painter_rle.md29
-rw-r--r--docs/reference_keymap_extras.md50
-rw-r--r--docs/squeezing_avr.md13
-rw-r--r--docs/tap_hold.md2
-rw-r--r--docs/zh-cn/_summary.md16
51 files changed, 1939 insertions, 981 deletions
diff --git a/docs/ChangeLog/20220528.md b/docs/ChangeLog/20220528.md
new file mode 100644
index 0000000000..1265c81206
--- /dev/null
+++ b/docs/ChangeLog/20220528.md
@@ -0,0 +1,216 @@
+# QMK Breaking Changes - 2022 May 28 Changelog
+
+## Notable Features :id=notable-features
+
+### Caps Word ([#16588](https://github.com/qmk/qmk_firmware/pull/16588)) :id=caps-word
+
+This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.
+
+For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on _Caps Word_ -- then type `qmk` (lowercase) without holding shift. Once you hit any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace, this will go back to normal typing!
+
+There are other activation mechanisms as well as configurable options like timeout and the like -- see the [Caps Word documentation](feature_caps_word.md) for more information.
+
+### Quantum Painter ([#10174](https://github.com/qmk/qmk_firmware/pull/10174)) :id=quantum-painter
+
+QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.
+
+Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.
+
+The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.
+
+See the [Quantum Painter documentation](quantum_painter.md) for more information on how to set up the displays as well as how to convert images and fonts.
+
+!> Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.
+
+### Encoder Mapping ([#13286](https://github.com/qmk/qmk_firmware/pull/13286)) :id=encoder-mapping
+
+One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. [#13286](https://github.com/qmk/qmk_firmware/pull/13286) added support for [Encoder Mapping](feature_encoders.md#encoder-map), which allows users to define encoder functionality in a similar way to their normal keymap.
+
+!> This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.
+
+## Changes Requiring User Action :id=changes-requiring-user-action
+
+### `RESET` => `QK_BOOT` ([#17037](https://github.com/qmk/qmk_firmware/pull/17037)) :id=reset-2-qk_boot
+
+QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of `RESET` as a keycode is causing naming collisions. As a result, [#17037](https://github.com/qmk/qmk_firmware/pull/17037) changed usages of `RESET` to the new keycode `QK_BOOT` in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing `RESET` should also move to `QK_BOOT`.
+
+### Sendstring keycode overhaul ([#16941](https://github.com/qmk/qmk_firmware/pull/16941)) :id=sendstring-keycodes
+
+Some keycodes used with `SEND_STRING` and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of [deprecated keycodes](https://github.com/qmk/qmk_firmware/blob/ebd402788346aa6e88bde1486b2a835684d40d39/quantum/send_string_keycodes.h#L456-L505) should be consulted to determine if you're using one of the older names (the first identifier after `#define`) -- you should swap to the newer variant (the second identifier on the same line).
+
+### Pillow Installation ([#17133](https://github.com/qmk/qmk_firmware/pull/17133)) :id=pillow-install
+
+The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably _Pillow_, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:
+
+On Windows, if using _QMK MSYS_ or _msys2_, you'll need to run the following command:
+
+```sh
+pacman --needed --noconfirm --disable-download-timeout -S mingw-w64-x86_64-python-pillow
+python3 -m pip install --upgrade qmk
+```
+
+On macOS:
+
+```sh
+brew update
+brew upgrade qmk/qmk/qmk
+```
+
+On Linux or WSL:
+
+```sh
+python3 -m pip install --user --upgrade qmk
+```
+
+### Updated Keyboard Codebases :id=updated-keyboard-codebases
+
+The following keyboards have had their source moved within QMK:
+
+| Old Keyboard Name | New Keyboard Name |
+|----------------------|--------------------|
+| absinthe | keyhive/absinthe |
+| amj40 | amjkeyboard/amj40 |
+| amj60 | amjkeyboard/amj60 |
+| amj96 | amjkeyboard/amj96 |
+| amjpad | amjkeyboard/amjpad |
+| at101_bh | viktus/at101_bh |
+| ergosaurus | keyhive/ergosaurus |
+| gmmk/pro/ansi | gmmk/pro/rev1/ansi |
+| gmmk/pro/iso | gmmk/pro/rev1/iso |
+| honeycomb | keyhive/honeycomb |
+| lattice60 | keyhive/lattice60 |
+| melody96 | ymdk/melody96 |
+| mt40 | mt/mt40 |
+| mt64rgb | mt/mt64rgb |
+| mt84 | mt/mt84 |
+| mt980 | mt/mt980 |
+| navi10 | keyhive/navi10 |
+| omnikey_bh | viktus/omnikey_bh |
+| opus | keyhive/opus |
+| smallice | keyhive/smallice |
+| southpole | keyhive/southpole |
+| uno | keyhive/uno |
+| ut472 | keyhive/ut472 |
+| wheatfield/blocked65 | mt/blocked65 |
+| wheatfield/split75 | mt/split75 |
+| z150_bh | viktus/z150_bh |
+
+---
+
+## Full changelist :id=full-changelist
+
+Core:
+* Quantum Painter ([#10174](https://github.com/qmk/qmk_firmware/pull/10174))
+* Add support for encoder mapping. ([#13286](https://github.com/qmk/qmk_firmware/pull/13286))
+* Add support for multiple switchs/solenoids to Haptic Feedback engine ([#15657](https://github.com/qmk/qmk_firmware/pull/15657))
+* Add compile/make macro to core ([#15959](https://github.com/qmk/qmk_firmware/pull/15959))
+* Add Reboot keycode to core ([#15990](https://github.com/qmk/qmk_firmware/pull/15990))
+* Add support for multiple sensors to pmw3360 ([#15996](https://github.com/qmk/qmk_firmware/pull/15996))
+* Asymmetric encoders, encoder tests. ([#16068](https://github.com/qmk/qmk_firmware/pull/16068))
+* Add hacky via support for RGB Matrix ([#16086](https://github.com/qmk/qmk_firmware/pull/16086))
+* Allow usage of AVRs minimal printf library ([#16266](https://github.com/qmk/qmk_firmware/pull/16266))
+* Squeeze AVR some more with `-mrelax` and `-mcall-prologues` ([#16269](https://github.com/qmk/qmk_firmware/pull/16269))
+* Heatmap incorrect matrix effect workaround ([#16315](https://github.com/qmk/qmk_firmware/pull/16315))
+* Add SN74x154 driver and convert AL1 custom matrix ([#16331](https://github.com/qmk/qmk_firmware/pull/16331))
+* Add customizable snake and knight animation increments ([#16337](https://github.com/qmk/qmk_firmware/pull/16337))
+* Chibios USB protocol: allow overriding RAW Capacity ([#16339](https://github.com/qmk/qmk_firmware/pull/16339))
+* HD44780 driver rework ([#16370](https://github.com/qmk/qmk_firmware/pull/16370))
+* Update wb32-dfu ([#16438](https://github.com/qmk/qmk_firmware/pull/16438))
+* Remove `send_unicode_hex_string()` ([#16518](https://github.com/qmk/qmk_firmware/pull/16518))
+* Add :flash target for UF2 bootloaders ([#16525](https://github.com/qmk/qmk_firmware/pull/16525))
+* Move `has_mouse_report_changed` function to `report.c` ([#16543](https://github.com/qmk/qmk_firmware/pull/16543))
+* Move Doxygen docs to subdirectory ([#16561](https://github.com/qmk/qmk_firmware/pull/16561))
+* Add Caps Word feature to core ([#16588](https://github.com/qmk/qmk_firmware/pull/16588))
+* Add non blackpill F4x1 config files ([#16600](https://github.com/qmk/qmk_firmware/pull/16600))
+* Force platform pin defs to be included ([#16611](https://github.com/qmk/qmk_firmware/pull/16611))
+* Refactor CTPC logic to allow future converters ([#16621](https://github.com/qmk/qmk_firmware/pull/16621))
+* Use a mutex guard for split shared memory ([#16647](https://github.com/qmk/qmk_firmware/pull/16647))
+* Rename TICK to TICK_EVENT ([#16649](https://github.com/qmk/qmk_firmware/pull/16649))
+* Add GET_TAPPING_TERM macro to reduce duplicate code ([#16681](https://github.com/qmk/qmk_firmware/pull/16681))
+* add the ability to change the pwm frequency for the IS31FL3737B ([#16718](https://github.com/qmk/qmk_firmware/pull/16718))
+* Joystick feature updates ([#16732](https://github.com/qmk/qmk_firmware/pull/16732))
+* Add emulated eeprom support for STM32F303xE ([#16737](https://github.com/qmk/qmk_firmware/pull/16737))
+* Refactor writePin to work with statements ([#16738](https://github.com/qmk/qmk_firmware/pull/16738))
+* Add mechanism to limit available converters ([#16783](https://github.com/qmk/qmk_firmware/pull/16783))
+* Implement XAP 'secure' core requirements ([#16843](https://github.com/qmk/qmk_firmware/pull/16843))
+* rgblight: Add functions to stop blinking one or all but one layer ([#16859](https://github.com/qmk/qmk_firmware/pull/16859))
+* Expose API for hardware unique ID ([#16869](https://github.com/qmk/qmk_firmware/pull/16869))
+* Added support for Wb32fq95 ([#16871](https://github.com/qmk/qmk_firmware/pull/16871))
+* Provide better config defaults for bluepill boards ([#16909](https://github.com/qmk/qmk_firmware/pull/16909))
+* Joystick: Simplify report descriptor and clean up error messages ([#16926](https://github.com/qmk/qmk_firmware/pull/16926))
+* Rename keymap_extras headers for consistency ([#16939](https://github.com/qmk/qmk_firmware/pull/16939))
+* Sendstring keycode overhaul ([#16941](https://github.com/qmk/qmk_firmware/pull/16941))
+* Move disable_jtag to platforms ([#16960](https://github.com/qmk/qmk_firmware/pull/16960))
+* Remove ARM pgm_read_word workaround in rgblight ([#16961](https://github.com/qmk/qmk_firmware/pull/16961))
+* Warn about LTO with arm_atsam, not ChibiOS. ([#17106](https://github.com/qmk/qmk_firmware/pull/17106))
+
+CLI:
+* Rework generate-api CLI command to use .build directory ([#16441](https://github.com/qmk/qmk_firmware/pull/16441))
+* Change data driven "str" type to represent a quoted string literal ([#16516](https://github.com/qmk/qmk_firmware/pull/16516))
+* Bump the 'jsonschema' version ([#16635](https://github.com/qmk/qmk_firmware/pull/16635))
+* Add frameworking for development board presets ([#16637](https://github.com/qmk/qmk_firmware/pull/16637))
+* Extend 'qmk info' to handle keymap level overrides ([#16702](https://github.com/qmk/qmk_firmware/pull/16702))
+* Data driven `g_led_config` ([#16728](https://github.com/qmk/qmk_firmware/pull/16728))
+* Allow new-keyboard to use development_board presets ([#16785](https://github.com/qmk/qmk_firmware/pull/16785))
+* Also format *.hpp files. ([#16997](https://github.com/qmk/qmk_firmware/pull/16997))
+
+Submodule updates:
+* ChibiOS 21.11.1 update. ([#16251](https://github.com/qmk/qmk_firmware/pull/16251))
+* Update ChibiOS-Contrib ([#16915](https://github.com/qmk/qmk_firmware/pull/16915))
+
+Keyboards:
+* chore: Add personal GMMK Pro keymap ([#15320](https://github.com/qmk/qmk_firmware/pull/15320))
+* move melody96 to ymdk vendor folder ([#15680](https://github.com/qmk/qmk_firmware/pull/15680))
+* move amj keyboards into amjkeyboard vendor folder ([#15733](https://github.com/qmk/qmk_firmware/pull/15733))
+* move z150_bh at101_bh omnikey_bh to viktus/ ([#16004](https://github.com/qmk/qmk_firmware/pull/16004))
+* MS Sculpt Mobile refactor ([#16038](https://github.com/qmk/qmk_firmware/pull/16038))
+* move keyhive exclusive boards into /keyhive ([#16084](https://github.com/qmk/qmk_firmware/pull/16084))
+* move 麦田 boards into /mt ([#16095](https://github.com/qmk/qmk_firmware/pull/16095))
+* Convert Wasdat Code custom matrix to SN74x138 driver ([#16257](https://github.com/qmk/qmk_firmware/pull/16257))
+* Move GMMK Pro to allow for multiple revisions ([#16423](https://github.com/qmk/qmk_firmware/pull/16423))
+* Updated pin mapping and readme. ([#16505](https://github.com/qmk/qmk_firmware/pull/16505))
+* Map data driven `DESCRIPTION` as string literal ([#16523](https://github.com/qmk/qmk_firmware/pull/16523))
+* remove unecessary layers ([#16559](https://github.com/qmk/qmk_firmware/pull/16559))
+* Helix/rev2 move to split common ([#16723](https://github.com/qmk/qmk_firmware/pull/16723))
+* Remove some layout exceptions ([#16957](https://github.com/qmk/qmk_firmware/pull/16957))
+* Refactor legacy quantum keycodes in default-ish keymaps ([#17037](https://github.com/qmk/qmk_firmware/pull/17037))
+* Refactor legacy quantum keycodes in default-ish keymaps ([#17150](https://github.com/qmk/qmk_firmware/pull/17150))
+
+Keyboard fixes:
+* gboards/gergoplex: move `COMBO_ENABLE` to keymap level ([#16667](https://github.com/qmk/qmk_firmware/pull/16667))
+* usb-usb converter: community layout support ([#16773](https://github.com/qmk/qmk_firmware/pull/16773))
+* Fix build of `keyhive/uno`. ([#16891](https://github.com/qmk/qmk_firmware/pull/16891))
+* Fix uno ([#16892](https://github.com/qmk/qmk_firmware/pull/16892))
+* converter/usb_usb: remove surplus commas ([#17024](https://github.com/qmk/qmk_firmware/pull/17024))
+* Various fixes for g_led_config lint warnings ([#17104](https://github.com/qmk/qmk_firmware/pull/17104))
+
+Others:
+* Add warning for CTPC/CONVERT_TO_PROTON_C. ([#16782](https://github.com/qmk/qmk_firmware/pull/16782))
+* Add bluepill/blackpill development board presets ([#16806](https://github.com/qmk/qmk_firmware/pull/16806))
+* Recommend pillow as part of manual MSYS install ([#17133](https://github.com/qmk/qmk_firmware/pull/17133))
+
+Bugs:
+* Fix one-shot locked modifiers ([#16114](https://github.com/qmk/qmk_firmware/pull/16114))
+* Fix missing definition for non-encoder case. ([#16593](https://github.com/qmk/qmk_firmware/pull/16593))
+* Fixup builds. ([#16596](https://github.com/qmk/qmk_firmware/pull/16596))
+* Missed some erroneous prints. ([#16597](https://github.com/qmk/qmk_firmware/pull/16597))
+* Workaround for pin_def errors on KINETIS based builds ([#16614](https://github.com/qmk/qmk_firmware/pull/16614))
+* Fix flipped logic bug with One Shot `OS_ON` / `OS_OFF` keys ([#16617](https://github.com/qmk/qmk_firmware/pull/16617))
+* Redo workaround for pin_def errors on KINETIS ([#16620](https://github.com/qmk/qmk_firmware/pull/16620))
+* Fix oneshot toggle logic ([#16630](https://github.com/qmk/qmk_firmware/pull/16630))
+* Mousekeys fix ([#16640](https://github.com/qmk/qmk_firmware/pull/16640))
+* Ignore transport defaults if SPLIT_KEYBOARD is unset ([#16706](https://github.com/qmk/qmk_firmware/pull/16706))
+* Fixes #16705 : digital rain follows val ([#16716](https://github.com/qmk/qmk_firmware/pull/16716))
+* Fix AVR backlight breathing: low brightness limit & exceeding breathing table max index ([#16770](https://github.com/qmk/qmk_firmware/pull/16770))
+* Fixed usb read loops not reading until timeout ([#16827](https://github.com/qmk/qmk_firmware/pull/16827))
+* [QP] Check BPP capabilities before loading the palette ([#16863](https://github.com/qmk/qmk_firmware/pull/16863))
+* Fix #16859. ([#16865](https://github.com/qmk/qmk_firmware/pull/16865))
+* Preinstall python dependencies before executing `qmk`. ([#16874](https://github.com/qmk/qmk_firmware/pull/16874))
+* Fixup AVR builds. ([#16875](https://github.com/qmk/qmk_firmware/pull/16875))
+* Fix kinetic mouse mode ([#16951](https://github.com/qmk/qmk_firmware/pull/16951))
+* Enhancement and fixes of "Secure" feature ([#16958](https://github.com/qmk/qmk_firmware/pull/16958))
+* Check for ongoing transfers on the OUT endpoint ([#16974](https://github.com/qmk/qmk_firmware/pull/16974))
+* MSYS2 install: add some Python dependencies through Pacman ([#17025](https://github.com/qmk/qmk_firmware/pull/17025))
+* Revert "Fix kinetic mouse mode (#16951)" ([#17095](https://github.com/qmk/qmk_firmware/pull/17095))
+* Workaround for recent -Werror=array-bounds AVR issues ([#17136](https://github.com/qmk/qmk_firmware/pull/17136))
+* Bug fix: Continue Caps Word when AltGr (right Alt) is held. ([#17156](https://github.com/qmk/qmk_firmware/pull/17156))
diff --git a/docs/_summary.md b/docs/_summary.md
index 74203aa0f8..11f5e1dd51 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -75,6 +75,7 @@
* Software Features
* [Auto Shift](feature_auto_shift.md)
+ * [Caps Word](feature_caps_word.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
@@ -94,7 +95,8 @@
* Hardware Features
* Displays
- * [HD44780 LCD Controller](feature_hd44780.md)
+ * [Quantum Painter](quantum_painter.md)
+ * [HD44780 LCD Driver](feature_hd44780.md)
* [ST7565 LCD Driver](feature_st7565.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
@@ -131,7 +133,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
- * [Most Recent ChangeLog](ChangeLog/20220226.md "QMK v0.16.0 - 2022 Feb 26")
+ * [Most Recent ChangeLog](ChangeLog/20220528.md "QMK v0.17.0 - 2022 May 28")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
@@ -147,7 +149,7 @@
* [EEPROM Driver](eeprom_driver.md)
* ['serial' Driver](serial_driver.md)
* [UART Driver](uart_driver.md)
- * [GPIO Controls](internals_gpio_control.md)
+ * [GPIO Controls](gpio_control.md)
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* Python Development
@@ -183,10 +185,10 @@
* [Understanding QMK](understanding_qmk.md)
* QMK Internals (In Progress)
- * [Defines](internals_defines.md)
- * [Input Callback Reg](internals_input_callback_reg.md)
- * [Midi Device](internals_midi_device.md)
- * [Midi Device Setup Process](internals_midi_device_setup_process.md)
- * [Midi Util](internals_midi_util.md)
- * [Send Functions](internals_send_functions.md)
- * [Sysex Tools](internals_sysex_tools.md)
+ * [Defines](internals/defines.md)
+ * [Input Callback Reg](internals/input_callback_reg.md)
+ * [Midi Device](internals/midi_device.md)
+ * [Midi Device Setup Process](internals/midi_device_setup_process.md)
+ * [Midi Util](internals/midi_util.md)
+ * [Send Functions](internals/send_functions.md)
+ * [Sysex Tools](internals/sysex_tools.md)
diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md
index 3fed268b98..981512cd4c 100644
--- a/docs/breaking_changes.md
+++ b/docs/breaking_changes.md
@@ -8,6 +8,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
+* [2022 May 28](ChangeLog/20220528.md)
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
* [2021 Aug 28](ChangeLog/20210828.md)
@@ -21,17 +22,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
-The next Breaking Change is scheduled for May 28, 2022.
+The next Breaking Change is scheduled for August 27, 2022.
### Important Dates
-* [x] 2022 Feb 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
-* [ ] 2022 Apr 31 - `develop` closed to new PR's.
-* [ ] 2022 Apr 31 - Call for testers.
-* [ ] 2022 May 14 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
-* [ ] 2022 May 26 - `master` is locked, no PR's merged.
-* [ ] 2022 May 28 - Merge `develop` to `master`.
-* [ ] 2022 May 28 - `master` is unlocked. PR's can be merged again.
+* [x] 2022 May 28 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
+* [ ] 2022 Jul 31 - `develop` closed to new PR's.
+* [ ] 2022 Jul 31 - Call for testers.
+* [ ] 2022 Aug 13 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
+* [ ] 2022 Aug 25 - `master` is locked, no PR's merged.
+* [ ] 2022 Aug 27 - Merge `develop` to `master`.
+* [ ] 2022 Aug 27 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -42,7 +43,7 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
* The PR is complete and ready to merge
-* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220226`.
+* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220827`.
* This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID.
* One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md
index c40989fb5e..4c38456e94 100644
--- a/docs/breaking_changes_history.md
+++ b/docs/breaking_changes_history.md
@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
+* [2022 May 28](ChangeLog/20220528.md) - version 0.17.0
* [2022 Feb 26](ChangeLog/20220226.md) - version 0.16.0
* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0
* [2021 Aug 28](ChangeLog/20210828.md) - version 0.14.0
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 463abcef12..a380d3eb2f 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -515,3 +515,15 @@ Run single test:
qmk pytest -t qmk.tests.test_cli_commands.test_c2json
qmk pytest -t qmk.tests.test_qmk_path
+
+## `qmk painter-convert-graphics`
+
+This command converts images to a format usable by QMK, i.e. the QGF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
+
+## `qmk painter-make-font-image`
+
+This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
+
+## `qmk painter-convert-font-image`
+
+This command converts an intermediate font image to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md
index 1c5e37f724..2241845261 100644
--- a/docs/compatible_microcontrollers.md
+++ b/docs/compatible_microcontrollers.md
@@ -51,6 +51,7 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
### WestBerryTech (WB32)
* [WB32F3G71xx](http://www.westberrytech.com)
+ * [WB32FQ95xx](http://www.westberrytech.com)
### NXP (Kinetis)
diff --git a/docs/config_options.md b/docs/config_options.md
index 838c4d86fd..8227a0e074 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -131,6 +131,8 @@ If you define these options you will disable the associated feature, which can s
If you define these options you will enable the associated feature, which may increase your code size.
+* `#define ENABLE_COMPILE_KEYCODE`
+ * Enables the `QK_MAKE` keycode
* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* `#define STRICT_LAYER_RELEASE`
diff --git a/docs/data_driven_config.md b/docs/data_driven_config.md
index 38fb5dbf14..cdcf21a19c 100644
--- a/docs/data_driven_config.md
+++ b/docs/data_driven_config.md
@@ -44,7 +44,7 @@ In other cases you should group like options together in an `object`. This is pa
In most cases you can add a simple mapping. These are maintained as JSON files in `data/mappings/info_config.json` and `data/mappings/info_rules.json`, and control mapping for `config.h` and `rules.mk`, respectively. Each mapping is keyed by the `config.h` or `rules.mk` variable, and the value is a hash with the following keys:
* `info_key`: (required) The location within `info.json` for this value. See below.
-* `value_type`: (optional) Default `str`. The format for this variable's value. See below.
+* `value_type`: (optional) Default `raw`. The format for this variable's value. See below.
* `to_json`: (optional) Default `true`. Set to `false` to exclude this mapping from info.json
* `to_c`: (optional) Default `true`. Set to `false` to exclude this mapping from config.h
* `warn_duplicate`: (optional) Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -57,7 +57,7 @@ Under the hood we use [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/)
#### Value Types
-By default we treat all values as simple strings. If your value is more complex you can use one of these types to intelligently parse the data:
+By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:
* `array`: A comma separated array of strings
* `array.int`: A comma separated array of integers
@@ -65,6 +65,7 @@ By default we treat all values as simple strings. If your value is more complex
* `hex`: A number formatted as hex
* `list`: A space separate array of strings
* `mapping`: A hash of key/value pairs
+* `str`: A quoted string literal
### Add code to extract it
diff --git a/docs/feature_caps_word.md b/docs/feature_caps_word.md
new file mode 100644
index 0000000000..0b71119917
--- /dev/null
+++ b/docs/feature_caps_word.md
@@ -0,0 +1,156 @@
+# Caps Word
+
+It is often useful to type a single word in all capitals, for instance
+abbreviations like "QMK", or in code, identifiers like `KC_SPC`. "Caps Word" is
+a modern alternative to Caps Lock:
+
+* Letters are capitalized while active, and Caps Word automatically disables
+ itself at the end of the word. That is, it stops by default once a space or
+ any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace is
+ pressed. Caps Word also disables itself if the keyboard is idle for 5 seconds.
+ This is configurable, see below.
+
+* To avoid requiring a dedicated key for Caps Word, there is an option
+ (`BOTH_SHIFTS_TURNS_ON_CAPS_WORD`) to activate Caps Word by simultaneously
+ pressing both shift keys. See below for other options.
+
+* The implementation does not use the Caps Lock (`KC_CAPS`) keycode. Caps Word
+ works even if you're remapping Caps Lock at the OS level to Ctrl or something
+ else, as Emacs and Vim users often do.
+
+
+## How do I enable Caps Word :id=how-do-i-enable-caps-word
+
+In your `rules.mk`, add:
+
+```make
+CAPS_WORD_ENABLE = yes
+```
+
+Next, use one the following methods to activate Caps Word:
+
+* **Activate by pressing a key**: Use the `CAPS_WORD` keycode (short
+ alias `CAPSWRD`) in your keymap.
+
+* **Activate by pressing Left Shift + Right Shift**: Add `#define
+ BOTH_SHIFTS_TURNS_ON_CAPS_WORD` to config.h. You may also need to disable or
+ reconfigure Command, details below. Then, simultaneously pressing both left
+ and right shifts turns on Caps Word. This method works with the plain
+ `KC_LSFT` and `KC_RSFT` keycodes as well as one-shot shifts and Space Cadet
+ shifts. If your shift keys are mod-taps, hold both shift mod-tap keys until
+ the tapping term, then re