aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/ChangeLog/20240526/PR23309.md35
-rw-r--r--docs/cli_commands.md36
-rw-r--r--docs/config_options.md4
-rw-r--r--docs/feature_audio.md48
-rw-r--r--docs/feature_led_matrix.md21
-rw-r--r--docs/feature_pointing_device.md3
-rw-r--r--docs/feature_rgblight.md17
-rw-r--r--docs/feature_sequencer.md2
-rw-r--r--docs/feature_split_keyboard.md2
-rw-r--r--docs/ja/config_options.md2
-rw-r--r--docs/keycodes.md16
-rw-r--r--docs/reference_info_json.md21
-rw-r--r--docs/reference_keymap_extras.md2
-rw-r--r--docs/ws2812_driver.md28
14 files changed, 174 insertions, 63 deletions
diff --git a/docs/ChangeLog/20240526/PR23309.md b/docs/ChangeLog/20240526/PR23309.md
new file mode 100644
index 0000000000..b5ca5f1e4d
--- /dev/null
+++ b/docs/ChangeLog/20240526/PR23309.md
@@ -0,0 +1,35 @@
+# MechKeys ACR60 Layout Updates
+
+This PR removed and changed some of the layouts that were configured for
+the ACR60. If you use one of the following layouts, you will need to
+update your keymap:
+
+- [`LAYOUT_hhkb`](#layout-hhkb)
+- [`LAYOUT_true_hhkb`](#layout-true-hhkb)
+- [`LAYOUT_directional`](#layout-directional)
+- [`LAYOUT_mitchsplit`](#layout-mitchsplit)
+
+## `LAYOUT_hhkb` :id=layout-hhkb
+
+1. Change your layout macro to `LAYOUT_60_hhkb`.
+2. Remove any keycodes for the key between Left Shift and QWERTY Z.
+
+## `LAYOUT_true_hhkb` :id=layout-true-hhkb
+
+1. Change your layout macro to `LAYOUT_60_true_hhkb`.
+2. Remove any keycodes for the key between Left Shift and QWERTY Z.
+
+## `LAYOUT_directional` :id=layout-directional
+
+1. Change your layout macro to `LAYOUT_60_ansi_arrow_split_bs`.
+2. Remove any keycodes for the key between Left Shift and QWERTY Z.
+3. Remove any keycodes for the keys immediately before *and* after the
+1.25u key of Split Spacebar.
+
+If you need split spacebars, you may implement
+`LAYOUT_60_ansi_arrow_split_space_split_bs` and change your layout to
+it, removing the keycode between Left Shift and QWERTY Z.
+
+## `LAYOUT_mitchsplit` :id=layout-mitchsplit
+
+1. Use `LAYOUT_60_ansi_split_space_split_rshift`.
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 685fad43b7..e97af79d33 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -803,3 +803,39 @@ This command converts a TTF font to an intermediate format for editing, before c
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.
+## `qmk test-c`
+
+This command runs the C unit test suite. If you make changes to C code you should ensure this runs successfully.
+
+**Usage**:
+
+```
+qmk test-c [-h] [-t TEST] [-l] [-c] [-e ENV] [-j PARALLEL]
+
+options:
+ -h, --help show this help message and exit
+ -t TEST, --test TEST Test to run from the available list. Supports wildcard globs. May be passed multiple times.
+ -l, --list List available tests.
+ -c, --clean Remove object files before compiling.
+ -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times.
+ -j PARALLEL, --parallel PARALLEL
+ Set the number of parallel make jobs; 0 means unlimited.
+```
+
+**Examples**:
+
+Run entire test suite:
+
+ qmk test-c
+
+List available tests:
+
+ qmk test-c --list
+
+Run matching test:
+
+ qmk test-c --test unicode*
+
+Run single test:
+
+ qmk test-c --test basic
diff --git a/docs/config_options.md b/docs/config_options.md
index 045d9c0747..046429a587 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -237,7 +237,7 @@ If you define these options you will enable the associated feature, which may in
* units to step when in/decreasing saturation
* `#define RGBLIGHT_VAL_STEP 12`
* units to step when in/decreasing value (brightness)
-* `#define RGBW`
+* `#define WS2812_RGBW`
* Enables RGBW LED support
## Mouse Key Options
@@ -446,7 +446,7 @@ Use these to enable or disable building certain features. The more you have enab
* Allows replacing the standard matrix scanning routine with a custom one.
* `DEBOUNCE_TYPE`
* Allows replacing the standard key debouncing routine with an alternative or custom one.
-* `WAIT_FOR_USB`
+* `USB_WAIT_FOR_ENUMERATION`
* Forces the keyboard to wait for a USB connection to be established before it starts up
* `NO_USB_STARTUP_CHECK`
* Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master.
diff --git a/docs/feature_audio.md b/docs/feature_audio.md
index 5227d063c3..05f32e9840 100644
--- a/docs/feature_audio.md
+++ b/docs/feature_audio.md
@@ -171,29 +171,31 @@ The available keycodes for audio are:
## Audio Config
-| Settings | Default | Description |
-|---------------------------------|----------------------|-------------------------------------------------------------------------------|
-|`AUDIO_PIN` | *Not defined* |Configures the pin that the speaker is connected to. |
-|`AUDIO_PIN_ALT` | *Not defined* |Configures the pin for a second speaker or second pin connected to one speaker.|
-|`AUDIO_PIN_ALT_AS_NEGATIVE` | *Not defined* |Enables support for one speaker connected to two pins. |
-|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. |
-|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. |
-|`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) |
-|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the QK_BOOT key (quantum.c) |
-|`AG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press AG_NORM (process_magic.c) |
-|`AG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press AG_SWAP (process_magic.c) |
-|`CG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press CG_NORM (process_magic.c) |
-|`CG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press CG_SWAP (process_magic.c) |
-|`MUSIC_ON_SONG` | `MUSIC_ON_SOUND` |Plays when music mode is activated (process_music.c) |
-|`MUSIC_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when music mode is deactivated (process_music.c) |
-|`MIDI_ON_SONG` | `MUSIC_ON_SOUND` |Plays when midi mode is activated (process_music.c) |
-|`MIDI_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when midi mode is deactivated (process_music.c) |
-|`CHROMATIC_SONG` | `CHROMATIC_SOUND` |Plays when the chromatic music mode is selected (process_music.c) |
-|`GUITAR_SONG` | `GUITAR_SOUND` |Plays when the guitar music mode is selected (process_music.c) |
-|`VIOLIN_SONG` | `VIOLIN_SOUND` |Plays when the violin music mode is selected (process_music.c) |
-|`MAJOR_SONG` | `MAJOR_SOUND` |Plays when the major music mode is selected (process_music.c) |
-|`DEFAULT_LAYER_SONGS` | *Not defined* |Plays song when switched default layers with [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer)(quantum.c) |
-|`SENDSTRING_BELL` | *Not defined* |Plays chime when the "enter" ("\a") character is sent (send_string.c) |
+| Settings | Default | Description |
+|----------------------------------|----------------------|---------------------------------------------------------------------------------------------|
+|`AUDIO_PIN` | *Not defined* |Configures the pin that the speaker is connected to. |
+|`AUDIO_PIN_ALT` | *Not defined* |Configures the pin for a second speaker or second pin connected to one speaker. |
+|`AUDIO_PIN_ALT_AS_NEGATIVE` | *Not defined* |Enables support for one speaker connected to two pins. |
+|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. |
+|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. |
+|`AUDIO_POWER_CONTROL_PIN` | *Not defined* |Enables power control code to enable or cut off power to speaker (such as with PAM8302 amp). |
+|`AUDIO_POWER_CONTROL_PIN_ON_STATE`| `1` |The state of the audio power control pin when audio is "on" - `1` for high, `0` for low. |
+|`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) |
+|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the QK_BOOT key (quantum.c) |
+|`AG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press AG_NORM (process_magic.c) |
+|`AG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press AG_SWAP (process_magic.c) |
+|`CG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press CG_NORM (process_magic.c) |
+|`CG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press CG_SWAP (process_magic.c) |
+|`MUSIC_ON_SONG` | `MUSIC_ON_SOUND` |Plays when music mode is activated (process_music.c) |
+|`MUSIC_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when music mode is deactivated (process_music.c) |
+|`MIDI_ON_SONG` | `MUSIC_ON_SOUND` |Plays when midi mode is activated (process_music.c) |
+|`MIDI_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when midi mode is deactivated (process_music.c) |
+|`CHROMATIC_SONG` | `CHROMATIC_SOUND` |Plays when the chromatic music mode is selected (process_music.c) |
+|`GUITAR_SONG` | `GUITAR_SOUND` |Plays when the guitar music mode is selected (process_music.c) |
+|`VIOLIN_SONG` | `VIOLIN_SOUND` |Plays when the violin music mode is selected (process_music.c) |
+|`MAJOR_SONG` | `MAJOR_SOUND` |Plays when the major music mode is selected (process_music.c) |
+|`DEFAULT_LAYER_SONGS` | *Not defined* |Plays song when switched default layers with [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer)(quantum.c). |
+|`SENDSTRING_BELL` | *Not defined* |Plays chime when the "enter" ("\a") character is sent (send_string.c) |
## Tempo
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that.
diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md
index 3a3a9dbf84..83357ab14e 100644
--- a/docs/feature_led_matrix.md
+++ b/docs/feature_led_matrix.md
@@ -217,16 +217,17 @@ As mentioned earlier, the center of the keyboard by default is expected to be `{
## Keycodes :id=keycodes
-All LED matrix keycodes are currently shared with the [Backlight feature](feature_backlight.md).
-
-| Key | Aliases | Description |
-|-------------------------|-----------|-------------------------------|
-| `QK_BACKLIGHT_TOGGLE` | `BL_TOGG` | Toggle LED Matrix on or off |
-| `QK_BACKLIGHT_STEP` | `BL_STEP` | Cycle through modes |
-| `QK_BACKLIGHT_ON` | `BL_ON` | Turn on LED Matrix |
-| `QK_BACKLIGHT_OFF` | `BL_OFF` | Turn off LED Matrix |
-| `QK_BACKLIGHT_UP` | `BL_UP` | Increase the brightness level |
-| `QK_BACKLIGHT_DOWN` | `BL_DOWN` | Decrease the brightness level |
+|Key |Aliases |Description |
+|-------------------------------|---------|-----------------------------------|
+|`QK_LED_MATRIX_ON` |`LM_ON` |Turn on LED Matrix |
+|`QK_LED_MATRIX_OFF` |`LM_OFF` |Turn off LED Matrix |
+|`QK_LED_MATRIX_TOGGLE` |`LM_TOGG`|Toggle LED Matrix on or off |
+|`QK_LED_MATRIX_MODE_NEXT` |`LM_NEXT`|Cycle through animations |
+|`QK_LED_MATRIX_MODE_PREVIOUS` |`LM_PREV`|Cycle through animations in reverse|
+|`QK_LED_MATRIX_BRIGHTNESS_UP` |`LM_BRIU`|Increase the brightness level |
+|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
+|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
+|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
## LED Matrix Effects :id=led-matrix-effects
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index b091dec08b..f55b308286 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -780,6 +780,9 @@ There are several functions that allow for more advanced interaction with the au
| `get_auto_mouse_timeout(void)` | Return the current timeout for turing off the layer | | `uint16_t` |
| `set_auto_mouse_debounce(uint16_t timeout)` | Change/set the debounce for preventing layer activation | | `void`(None) |
| `get_auto_mouse_debounce(void)` | Return the current debounce for preventing layer activation | | `uint8_t` |
+| `is_auto_mouse_active(void)` | Returns the active state of the auto mouse layer (eg if the layer has been triggered)| | `bool` |
+| `get_auto_mouse_key_tracker(void)` | Gets the current count for the auto mouse key tracker. | | `int8_t` |
+| `set_auto_mouse_key_tracker(int8_t key_tracker)` | Sets/Overrides the current count for the auto mouse key tracker. | | `void`(None) |
_NOTES:_
- _Due to the nature of how some functions work, the `auto_mouse_trigger_reset`, and `auto_mouse_layer_off` functions should never be called in the `layer_state_set_*` stack as this can cause indefinite loops._
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index b7ba075731..ae37ceca92 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -6,7 +6,7 @@ QMK has the ability to control RGB LEDs attached to your keyboard. This is commo
Some keyboards come with RGB LEDs preinstalled. Others must have them installed after the fact. See the [Hardware Modification](#hardware-modification) section for information on adding RGB lighting to your keyboard.
-Currently QMK supports the following addressable LEDs (however, the white LED in RGBW variants is not supported):
+Currently QMK supports the following addressable LEDs:
* WS2811, WS2812, WS2812B, WS2812C, etc.
* SK6812, SK6812MINI, SK6805
@@ -356,27 +356,12 @@ Usually lighting layers apply their configured brightness once activated. If you
If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight/rgblight.h) for the full list, but the most commonly used functions include:
-### Utility Functions
-|Function |Description |
-|--------------------------------------------|-------------------------------------------------------------------|
-|`sethsv(hue, sat, val, ledbuf)` |Set ledbuf to the given HSV value |
-|`sethsv_raw(hue, sat, val, ledbuf)` |Set ledbuf to the given HSV value without RGBLIGHT_LIMIT_VAL check |
-|`setrgb(r, g, b, ledbuf)` |Set ledbuf to the given RGB value where `r`/`g`/`b` |
-
### Low level Functions
|Function |Description |
|--------------------------------------------|-------------------------------------------|
|`rgblight_set()` |Flush out led buffers to LEDs |
|`rgblight_set_clipping_range(pos, num)` |Set clipping Range. see [Clipping Range](#clipping-range) |
-Example:
-```c
-sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0
-sethsv(HSV_RED, (rgb_led_t *)&led[1]); // led 1
-sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2
-rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly.
-```
-
### Effects and Animations Functions
#### effect range setting
|Function |Description |
diff --git a/docs/feature_sequencer.md b/docs/feature_sequencer.md
index 87a277400a..3af55197c5 100644
--- a/docs/feature_sequencer.md
+++ b/docs/feature_sequencer.md
@@ -44,7 +44,7 @@ While the tempo defines the absolute speed at which the sequencer goes through t
|-------------------------------|---------|---------------------------------------------------|
|`QK_SEQUENCER_ON` |`SQ_ON` |Start the step sequencer |
|`QK_SEQUENCER_OFF` |`SQ_OFF` |Stop the step sequencer |
-|`QK_SEQUENCER_TOGGLE` |`SQ_TOG` |Toggle the step sequencer playback |
+|`QK_SEQUENCER_TOGGLE` |`SQ_TOGG`|Toggle the step sequencer playback |
|`QK_SEQUENCER_STEPS_ALL` |`SQ_SALL`|Enable all the steps |
|`QK_SEQUENCER_STEPS_CLEAR` |`SQ_SCLR`|Disable all the steps |
|`QK_SEQUENCER_TEMPO_DOWN` |`SQ_TMPD`|Decrease the tempo |
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 59159cb3fa..99c252d03e 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -266,7 +266,7 @@ This enables syncing of the Host LED status (caps lock, num lock, etc) between b
#define SPLIT_MODS_ENABLE
```
-This enables transmitting modifier state (normal, weak and oneshot) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen).
+This enables transmitting modifier state (normal, weak, oneshot and oneshot locked) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen).
```c
#define SPLIT_WPM_ENABLE
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
index a349081d6a..6cc1b6bfcd 100644
--- a/docs/ja/config_options.md
+++ b/docs/ja/config_options.md
@@ -378,7 +378,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。�
* 標準マトリックス走査ルーチンを独自のものに置き換えることができます。
* `DEBOUNCE_TYPE`
* 標準キーデバウンスルーチンを代替または独自のものに置き換えることができます。
-* `WAIT_FOR_USB`
+* `USB_WAIT_FOR_ENUMERATION`
* キーボードが起動する前に、USB 接続が確立されるのをキーボードに待機させます
* `NO_USB_STARTUP_CHECK`
* キーボードの起動後の usb サスペンドチェックを無効にします。通常、キーボードはタスクが実行される前にホストがウェイク アップするのを待ちます。分割キーボードは半分はウェイクアップコールを取得できませんが、マスタにコマンドを送信する必要があるため、役に立ちます。
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 65762234a4..9d722216a9 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -398,6 +398,22 @@ See also: [Leader Key](feature_leader_key.md)
|---------|------------------------|
|`QK_LEAD`|Begins a leader sequence|
+## LED Matrix :id=led-matrix
+
+See also: [LED Matrix](feature_led_matrix.md)
+
+|Key |Aliases |Description |
+|-------------------------------|---------|-----------------------------------|
+|`QK_LED_MATRIX_ON` |`LM_ON` |Turn on LED Matrix |
+|`QK_LED_MATRIX_OFF` |`LM_OFF` |Turn off LED Matrix |
+|`QK_LED_MATRIX_TOGGLE` |`LM_TOGG`|Toggle LED Matrix on or off |
+|`QK_LED_MATRIX_MODE_NEXT` |`LM_NEXT`|Cycle through animations |
+|`QK_LED_MATRIX_MODE_PREVIOUS` |`LM_PREV`|Cycle through animations in reverse|
+|`QK_LED_MATRIX_BRIGHTNESS_UP` |`LM_BRIU`|Increase the brightness level |
+|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
+|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
+|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
+
## Magic Keycodes :id=magic-keycodes
See also: [Magic Keycodes](keycodes_magic.md)
diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md
index 796db1f244..8a2ded95f7 100644
--- a/docs/reference_info_json.md
+++ b/docs/reference_info_json.md
@@ -118,15 +118,24 @@ Configures the [Audio](feature_audio.md) feature.
* `clicky`
* The default audio clicky enabled state.
* Default: `true`
+ * `driver`
+ * The driver to use. Must be one of `dac_additive`, `dac_basic`, `pwm_software`, `pwm_hardware`.
* `macro_beep`
* Play a short beep for `\a` (ASCII `BEL`) characters in Send String macros.
* Default: `false`
* `pins` (Required)
* The GPIO pin(s) connected to the speaker(s).
+ * `power_control`
+ * `on_state`
+ * The logical GPIO state required to turn the speaker on.
+ * Default: `1` (on = high)
+ * `pin`
+ * The GPIO pin connected to speaker power circuit.
* `voices`
* Use multiple audio voices.
* Default: `false`
+
## Backlight :id=backlight
Configures the [Backlight](feature_backlight.md) feature.
@@ -579,9 +588,6 @@ Configures the [RGB Lighting](feature_rgblight.md) feature.
* `max_brightness`
* The maximum value which the HSV "V" component is scaled to, from 0 to 255.
* Default: `255`
- * `rgbw`
- * Enable RGBW LEDs.
- * Default: `false`
* `saturation_steps`
* The number of saturation adjustment steps.
* Default: `17`
@@ -633,7 +639,7 @@ Configures the [RGB Matrix](feature_rgb_matrix.md) feature.
* The default animation speed.
* Default: `128`
* `driver` (Required)
- * The driver to use. Must be one of `aw20216s`, `custom`, `is31fl3218`, `is31fl3729`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`, `ws2812`.
+ * The driver to use. Must be one of `aw20216s`, `custom`, `is31fl3218`, `is31fl3236`, `is31fl3729`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`, `ws2812`.
* `hue_steps`
* The number of hue adjustment steps.
* Default: `8`
@@ -733,7 +739,7 @@ Configures the [Split Keyboard](feature_split_keyboard.md) feature.
* Default: `1`
* `transport`
* `protocol`
- * The split transport protocol to use. Must be one of `custom`, `i2c`, `serial`, `serial_usart`.
+ * The split transport protocol to use. Must be one of `custom`, `i2c`, `serial`.
* `sync`
* `activity`
* Mirror the activity timestamps to the secondary half.
@@ -826,7 +832,7 @@ Configures the [Stenography](feature_stenography.md) feature.
* `suspend_wakeup_delay`
* The amount of time to wait after sending a wakeup packet, in milliseconds.
* Default: `0` (disabled)
- * `wait_for`
+ * `wait_for_enumeration`
* Force the keyboard to wait for USB enumeration before starting up.
* Default: `false`
@@ -846,3 +852,6 @@ Configures the [WS2812](ws2812_driver.md) driver.
* `i2c_timeout`
* The I²C timeout in milliseconds (`i2c` driver only).
* Default: `100` (100 ms)
+ * `rgbw`
+ * Enable RGBW LEDs.
+ * Default: `false`
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index cf2ab28876..191e0d4ea8 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -23,6 +23,8 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Canadian Multilingual (CSA) |`keymap_canadian_multilingual.h` |`sendstring_canadian_multilingual.h`|
|Croatian |`keymap_croatian.h` |`sendstring_croatian.h` |
|Czech |`keymap_czech.h` |`sendstring_czech.h` |
+|Czech (macOS, ANSI) |`keymap_czech_mac_ansi.h` |`sendstring_czech_mac_ansi.h` |
+|Czech (macOS, ISO) |`keymap_czech_mac_iso.h` |`sendstring_czech_mac_iso.h` |
|Danish |`keymap_danish.h` |`sendstring_danish.h` |
|Dutch (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
|English (Ireland) |`keymap_irish.h` | |
diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md
index 244d39dbe0..8851c042f0 100644
--- a/docs/ws2812_driver.md
+++ b/docs/ws2812_driver.md
@@ -33,6 +33,7 @@ Add the following to your `config.h`:
|`WS2812_T0H` |`350` |The length of a "0" bit's high phase in nanoseconds |
|`WS2812_TRST_US` |`280` |The length of the reset phase in microseconds |
|`WS2812_BYTE_ORDER`|`WS2812_BYTE_ORDER_GRB`|The byte order of the RGB data |
+|`WS2812_RGBW` |*Not defined* |Enables RGBW support (except `i2c` driver) |
### Timing Adjustment :id=timing-adjustment
@@ -58,6 +59,27 @@ Where the byte order may be one of:
|`RGB` |WS2812B-2020 |
|`BGR` |TM1812 |
+### RGBW Support :id=rgbw-support
+
+Rendering the color white with RGB LEDs is typically inconsistent due to inherent variations between each individual LED die. However, some WS2812 variants (such as SK6812RGBW) also possess a white LED along with the red, green, and blue channels, which allows for a more accurate white to be displayed.
+
+QMK can automatically convert the RGB data to be sent to the LEDs to mix in the white channel:
+
+```
+w = min(r, g, b)
+r -= w
+g -= w
+b -= w
+```
+
+Thus, an RGB triplet of `255,255,255` will simply turn on the white LED fully (`0,0,0,255`).
+
+To enable RGBW conversion, add the following to your `config.h`:
+
+```c
+#define WS2812_RGBW
+```
+
## Driver Configuration :id=driver-configuration
Driver selection can be configured in `rules.mk` as `WS2812_DRIVER`, or in `info.json` as `ws2812.driver`. Valid values are `bitbang` (default), `i2c`, `spi`, `pwm`, `vendor`, or `custom`. See below for information on individual drivers.
@@ -208,9 +230,9 @@ The following `#define`s apply only to the `pwm` driver:
|`WS2812_PWM_DRIVER` |`PWMD2` |The PWM driver to use |
|`WS2812_PWM_CHANNEL` |`2` |The PWM channel to use |
|`WS2812_PWM_PAL_MODE` |`2` |The pin alternative function to use |
-|`WS2812_DMA_STREAM` |`STM32_DMA1_STREAM2`|The DMA Stream for `TIMx_UP` |
-|`WS2812_DMA_CHANNEL` |`2` |The DMA Channel for `TIMx_UP` |
-|`WS2812_DMAMUX_ID` |*Not defined* |The DMAMUX configuration for `TIMx_UP` - only required if your MCU has a DMAMUX peripheral|
+|`WS2812_PWM_DMA_STREAM` |`STM32_DMA1_STREAM2`|The DMA Stream for `TIMx_UP` |
+|`WS2812_PWM_DMA_CHANNEL` |`2` |The DMA Channel for `TIMx_UP` |
+|`WS2812_PWM_DMAMUX_ID` |*Not defined* |The DMAMUX configuration for `TIMx_UP` - only required if your MCU has a DMAMUX peripheral|
|`WS2812_PWM_COMPLEMENTARY_OUTPUT`|*Not defined* |Whether the PWM output is complementary (`TIMx_CHyN`) |
?> Using a complementary timer output (`TIMx_CHyN`) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in `mcuconf.h` must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.