78a0adfbb4d2c4e12f93f2a62ded0020d406243e
- Author
- Ryan <fauxpark@gmail.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/docs/ChangeLog/20210828.md b/docs/ChangeLog/20210828.md
2index f84169cc9475b30c6a6e9de02352fef5c7781b09..18b1d92b0cd193ff1d64fbec51ab48b4db095375 100644
3--- a/docs/ChangeLog/20210828.md
4+++ b/docs/ChangeLog/20210828.md
5@@ -10,11 +10,11 @@ It is also now possible to define combos that have keys overlapping with other c
6
7 ### Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422)) {#key-overrides}
8
9diff --git a/docs/ChangeLog/20211127.md b/docs/ChangeLog/20211127.md
10index d810be505a418da6c97938e1ab3445122e461d4e..5ca68c3999361e6b357ac873c18acfa4717c900b 100644
11--- a/docs/ChangeLog/20211127.md
12+++ b/docs/ChangeLog/20211127.md
13@@ -31,7 +31,7 @@ QMK now has core-supplied support for the following pointing device peripherals:
14 | `POINTING_DEVICE_DRIVER = pimoroni_trackball` | Pimoroni Trackball |
15 | `POINTING_DEVICE_DRIVER = pmw3360` | PMW 3360 |
16
17-See the new documentation for the [Pointing Device](../feature_pointing_device) feature for more information on specific configuration for each driver.
18+See the new documentation for the [Pointing Device](../features/pointing_device) feature for more information on specific configuration for each driver.
19
20 ### Dynamic Tapping Term ([#11036](https://github.com/qmk/qmk_firmware/pull/11036)) {#dynamic-tapping-term}
21
22@@ -116,7 +116,7 @@ Related to the previous section -- RGB Matrix modes have now been made to be opt
23
24diff --git a/docs/ChangeLog/20220226.md b/docs/ChangeLog/20220226.md
25index f0cbbc0603ebc0a4fccd80ea3baaa001c8708487..a10b6447eacd7805847d9b3ebdd860031d0d8188 100644
26--- a/docs/ChangeLog/20220226.md
27+++ b/docs/ChangeLog/20220226.md
28@@ -12,7 +12,7 @@ Something something *Lets go gamers!*
29
30 Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.
31
32-See the [Pointing Device](../feature_pointing_device) documentation for further configuration options.
33+See the [Pointing Device](../features/pointing_device) documentation for further configuration options.
34
35 ## Changes Requiring User Action {#changes-requiring-user-action}
36
37diff --git a/docs/ChangeLog/20220528.md b/docs/ChangeLog/20220528.md
38index 31347c9c005256c3e893a26f0fa46b05c5048df4..ae84f163d4d794f958f5ae43c511e81cf5876dc2 100644
39--- a/docs/ChangeLog/20220528.md
40+++ b/docs/ChangeLog/20220528.md
41@@ -8,7 +8,7 @@ This is a new feature that allows for capslock-like functionality that turns its
42
43diff --git a/docs/ChangeLog/20220827.md b/docs/ChangeLog/20220827.md
44index d58db91272f99cfae577e4e5529d599cabd765b4..6d9f82f36a638159b91ee70c4ef6ae7bc6bcf056 100644
45--- a/docs/ChangeLog/20220827.md
46+++ b/docs/ChangeLog/20220827.md
47@@ -83,7 +83,7 @@ The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to
48
49diff --git a/docs/ChangeLog/20221126.md b/docs/ChangeLog/20221126.md
50index 25cf1d592dd8e97d979de69f97dad4ac08ed7586..41b0ad0a6b71d0a9a6e5e2696e2f4d6439641f18 100644
51--- a/docs/ChangeLog/20221126.md
52+++ b/docs/ChangeLog/20221126.md
53@@ -4,7 +4,7 @@
54
55 ### Autocorrect ([#15699](https://github.com/qmk/qmk_firmware/pull/15699)) {#autocorrect}
56
57diff --git a/docs/ChangeLog/20230226.md b/docs/ChangeLog/20230226.md
58index ee560686044e607bf334d7ecf623e33ec479b94c..87ff92426454d73109591debb999129e399a95d3 100644
59--- a/docs/ChangeLog/20230226.md
60+++ b/docs/ChangeLog/20230226.md
61@@ -106,7 +106,7 @@ void leader_end_user(void) {
62 }
63 ```
64
65-For more information please see the [Leader Key documentation](../feature_leader_key).
66+For more information please see the [Leader Key documentation](../features/leader_key).
67
68 ### Updated Keyboard Codebases {#updated-keyboard-codebases}
69
70diff --git a/docs/ChangeLog/20230528.md b/docs/ChangeLog/20230528.md
71index 40ab3a420c2bc9b87dfa52af565972b0ab36a81a..77ad6209b0edade6cf396d26550ef5cd5c08335e 100644
72--- a/docs/ChangeLog/20230528.md
73+++ b/docs/ChangeLog/20230528.md
74@@ -24,7 +24,7 @@ Of note for keyboard designers:
75
76diff --git a/docs/ChangeLog/20230827.md b/docs/ChangeLog/20230827.md
77index aecbcb0d8f43f337ae0fa0f7b02d021b7569a018..493ee84349d03f1dad5a3dc41753c6fbcd496933 100644
78--- a/docs/ChangeLog/20230827.md
79+++ b/docs/ChangeLog/20230827.md
80@@ -42,7 +42,7 @@ AVR sees minimal (if any) benefit -- `double` was interpreted as `float` on AVR
81
82 ### Remove encoder in-matrix workaround code ([#20389](https://github.com/qmk/qmk_firmware/pull/20389)) {#remove-encoder-in-matrix-workaround-code}
83
84diff --git a/docs/ChangeLog/20240225.md b/docs/ChangeLog/20240225.md
85index f4103c594e09e643eb60b4976645dedeedc91b69..1ebfbd23094c6fde52b288a4355b0867da01b572 100644
86--- a/docs/ChangeLog/20240225.md
87+++ b/docs/ChangeLog/20240225.md
88@@ -120,7 +120,7 @@ In some cases, accidental automatic activation of the mouse layer made it diffic
89
90 ### DIP Switch Mapping ([#22543](https://github.com/qmk/qmk_firmware/pull/22543)) {#dip-switch-map}
91
92-Much like Encoder Mapping, DIP Switch Mapping allows for specifying a table of actions to execute when a DIP switch state changes. See the [DIP Switch Documentation](../feature_dip_switch#dip-switch-map) for more information.
93+Much like Encoder Mapping, DIP Switch Mapping allows for specifying a table of actions to execute when a DIP switch state changes. See the [DIP Switch Documentation](../features/dip_switch#dip-switch-map) for more information.
94
95 ```c
96 #if defined(DIP_SWITCH_MAP_ENABLE)
97diff --git a/docs/_sidebar.json b/docs/_sidebar.json
98index f1b7c156e6eb5e230fa89b443cf279d42380b670..b41719e4b327d1521e378059faebebdc8060ee9d 100644
99--- a/docs/_sidebar.json
100+++ b/docs/_sidebar.json
101@@ -103,45 +103,45 @@
102 {
103 "text": "Advanced Keycodes",
104 "items": [
105- { "text": "Command", "link": "/feature_command" },
106- { "text": "Dynamic Macros", "link": "/feature_dynamic_macros" },
107- { "text": "Grave Escape", "link": "/feature_grave_esc" },
108- { "text": "Leader Key", "link": "/feature_leader_key" },
109+ { "text": "Command", "link": "/features/command" },
110+ { "text": "Dynamic Macros", "link": "/features/dynamic_macros" },
111+ { "text": "Grave Escape", "link": "/features/grave_esc" },
112+ { "text": "Leader Key", "link": "/features/leader_key" },
113 { "text": "Mod-Tap", "link": "/mod_tap" },
114 { "text": "Macros", "link": "/feature_macros" },
115- { "text": "Mouse Keys", "link": "/feature_mouse_keys" },
116- { "text": "Programmable Button", "link": "/feature_programmable_button" },
117- { "text": "Repeat Key", "link": "/feature_repeat_key" },
118- { "text": "Space Cadet Shift", "link": "/feature_space_cadet" },
119+ { "text": "Mouse Keys", "link": "/features/mouse_keys" },
120+ { "text": "Programmable Button", "link": "/features/programmable_button" },
121+ { "text": "Repeat Key", "link": "/features/repeat_key" },
122+ { "text": "Space Cadet Shift", "link": "/features/space_cadet" },
123 { "text": "US ANSI Shifted Keys", "link": "/keycodes_us_ansi_shifted" }
124 ]
125 },
126 {
127 "text": "Software Features",
128 "items": [
129- { "text": "Auto Shift", "link": "/feature_auto_shift" },
130- { "text": "Autocorrect", "link": "/feature_autocorrect" },
131- { "text": "Caps Word", "link": "/feature_caps_word" },
132- { "text": "Combos", "link": "/feature_combo" },
133+ { "text": "Auto Shift", "link": "/features/auto_shift" },
134+ { "text": "Autocorrect", "link": "/features/autocorrect" },
135+ { "text": "Caps Word", "link": "/features/caps_word" },
136+ { "text": "Combos", "link": "/features/combo" },
137 { "text": "Debounce API", "link": "/feature_debounce_type" },
138- { "text": "Digitizer", "link": "/feature_digitizer" },
139+ { "text": "Digitizer", "link": "/features/digitizer" },
140 { "text": "EEPROM", "link": "/feature_eeprom" },
141- { "text": "Key Lock", "link": "/feature_key_lock" },
142- { "text": "Key Overrides", "link": "/feature_key_overrides" },
143+ { "text": "Key Lock", "link": "/features/key_lock" },
144+ { "text": "Key Overrides", "link": "/features/key_overrides" },
145 { "text": "Layers", "link": "/feature_layers" },
146 { "text": "One Shot Keys", "link": "/one_shot_keys" },
147- { "text": "OS Detection", "link": "/feature_os_detection" },
148- { "text": "Raw HID", "link": "/feature_rawhid" },
149- { "text": "Secure", "link": "/feature_secure" },
150- { "text": "Send String", "link": "/feature_send_string" },
151- { "text": "Sequencer", "link": "/feature_sequencer" },
152- { "text": "Swap Hands", "link": "/feature_swap_hands" },
153- { "text": "Tap Dance", "link": "/feature_tap_dance" },
154+ { "text": "OS Detection", "link": "/features/os_detection" },
155+ { "text": "Raw HID", "link": "/features/rawhid" },
156+ { "text": "Secure", "link": "/features/secure" },
157+ { "text": "Send String", "link": "/features/send_string" },
158+ { "text": "Sequencer", "link": "/features/sequencer" },
159+ { "text": "Swap Hands", "link": "/features/swap_hands" },
160+ { "text": "Tap Dance", "link": "/features/tap_dance" },
161 { "text": "Tap-Hold Configuration", "link": "/tap_hold" },
162- { "text": "Tri Layer", "link": "/feature_tri_layer" },
163- { "text": "Unicode", "link": "/feature_unicode" },
164+ { "text": "Tri Layer", "link": "/features/tri_layer" },
165+ { "text": "Unicode", "link": "/features/unicode" },
166 { "text": "Userspace", "link": "/feature_userspace" },
167- { "text": "WPM Calculation", "link": "/feature_wpm" }
168+ { "text": "WPM Calculation", "link": "/features/wpm" }
169 ]
170 },
171 {
172@@ -157,35 +157,35 @@
173 { "text": "Quantum Painter LVGL Integration", "link": "/quantum_painter_lvgl" }
174 ]
175 },
176- { "text": "HD44780 LCD Driver", "link": "/feature_hd44780" },
177- { "text": "ST7565 LCD Driver", "link": "/feature_st7565" },
178- { "text": "OLED Driver", "link": "/feature_oled_driver" }
179+ { "text": "HD44780 LCD Driver", "link": "/features/hd44780" },
180+ { "text": "ST7565 LCD Driver", "link": "/features/st7565" },
181+ { "text": "OLED Driver", "link": "/features/oled_driver" }
182 ]
183 },
184 {
185 "text": "Lighting",
186 "items": [
187- { "text": "Backlight", "link": "/feature_backlight" },
188- { "text": "LED Matrix", "link": "/feature_led_matrix" },
189- { "text": "RGB Lighting", "link": "/feature_rgblight" },
190- { "text": "RGB Matrix", "link": "/feature_rgb_matrix" }
191+ { "text": "Backlight", "link": "/features/backlight" },
192+ { "text": "LED Matrix", "link": "/features/led_matrix" },
193+ { "text": "RGB Lighting", "link": "/features/rgblight" },
194+ { "text": "RGB Matrix", "link": "/features/rgb_matrix" }
195 ]
196 },
197- { "text": "Audio", "link": "/feature_audio" },
198- { "text": "Bluetooth", "link": "/feature_bluetooth" },
199- { "text": "Bootmagic Lite", "link": "/feature_bootmagic" },
200+ { "text": "Audio", "link": "/features/audio" },
201diff --git a/docs/cli_commands.md b/docs/cli_commands.md
202index 5a85356e70716ef1b6f6d36bf93c399c3d303bb3..7d74d8e6177b384c5437c5ab21919948b04df151 100644
203--- a/docs/cli_commands.md
204+++ b/docs/cli_commands.md
205@@ -749,7 +749,7 @@ options:
206
207 ## `qmk generate-rgb-breathe-table`
208
209diff --git a/docs/config_options.md b/docs/config_options.md
210index 236649a0ea5b3fc4df336d27b904152d0018d383..a1ca8c8d503a9f9c7855364fe497f0f7f19ba1a8 100644
211--- a/docs/config_options.md
212+++ b/docs/config_options.md
213@@ -207,7 +207,7 @@ If you define these options you will enable the associated feature, which may in
214 * `#define TAP_HOLD_CAPS_DELAY 80`
215diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
216index ac21f0e0390e1565a09231d718e1801945c89167..729f0cd028346edef2dcfa9eed604d9ed373558b 100644
217--- a/docs/custom_quantum_functions.md
218+++ b/docs/custom_quantum_functions.md
219@@ -206,7 +206,7 @@ Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To
220
221 ### Example `void housekeeping_task_user(void)` implementation
222
223-This example will show you how to use `void housekeeping_task_user(void)` to turn off [RGB Light](feature_rgblight). For RGB Matrix, the [builtin](feature_rgb_matrix#additional-configh-options) `RGB_MATRIX_TIMEOUT` should be used.
224+This example will show you how to use `void housekeeping_task_user(void)` to turn off [RGB Light](features/rgblight). For RGB Matrix, the [builtin](features/rgb_matrix#additional-configh-options) `RGB_MATRIX_TIMEOUT` should be used.
225
226 First, add the following lines to your keymap's `config.h`:
227
228diff --git a/docs/documentation_best_practices.md b/docs/documentation_best_practices.md
229index d41ec28f196fb22fece0ed8355e3afdb71c4a57f..bc64472e2415e5cdd89a5b42058a265668f0ec65 100644
230--- a/docs/documentation_best_practices.md
231+++ b/docs/documentation_best_practices.md
232@@ -69,4 +69,4 @@ This page describes my cool feature. You can use my cool feature to make coffee
233 |KC_SUGAR||Order Sugar|
234 ```
235
236-Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_sidebar.json`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.
237+Place your documentation into `docs/features/<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_sidebar.json`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.
238diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md
239index ce16ada166ac532a5f60adc786f8aae725c442a5..099376faeb1d3e78203ff96285ba871620e3db5a 100644
240--- a/docs/driver_installation_zadig.md
241+++ b/docs/driver_installation_zadig.md
242@@ -8,8 +8,8 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have
243
244 ## Installation
245
246diff --git a/docs/adc_driver.md b/docs/drivers/adc.md
247rename from docs/adc_driver.md
248rename to docs/drivers/adc.md
249index a1ab5a525132187726d0ee1a903289f43e07a9e8..d89068c2aeb4b7ca8cfc9500d7b4420d0f1ab2f3 100644
250--- a/docs/adc_driver.md
251+++ b/docs/drivers/adc.md
252@@ -1,6 +1,6 @@
253 # ADC Driver
254
255diff --git a/docs/apa102_driver.md b/docs/drivers/apa102.md
256rename from docs/apa102_driver.md
257rename to docs/drivers/apa102.md
258index 0f905e3f1811a737389d5818417e8ae8cc19fa1c..88868a73b59363f8b5018bd232d5d18736720a6c 100644
259--- a/docs/apa102_driver.md
260+++ b/docs/drivers/apa102.md
261@@ -1,10 +1,10 @@
262 # APA102 Driver {#apa102-driver}
263
264-This driver provides support for APA102 addressable RGB LEDs. They are similar to the [WS2812](ws2812_driver) LEDs, but have increased data and refresh rates.
265+This driver provides support for APA102 addressable RGB LEDs. They are similar to the [WS2812](ws2812) LEDs, but have increased data and refresh rates.
266
267 ## Usage {#usage}
268
269-In most cases, the APA102 driver code is automatically included if you are using either the [RGBLight](feature_rgblight) or [RGB Matrix](feature_rgb_matrix) feature with the `apa102` driver set, and you would use those APIs instead.
270+In most cases, the APA102 driver code is automatically included if you are using either the [RGBLight](../features/rgblight) or [RGB Matrix](../features/rgb_matrix) feature with the `apa102` driver set, and you would use those APIs instead.
271
272 However, if you need to use the driver standalone, add the following to your `rules.mk`:
273
274diff --git a/docs/audio_driver.md b/docs/drivers/audio.md
275rename from docs/audio_driver.md
276rename to docs/drivers/audio.md
277index 4a71b4f411cdf520c5d608c6ed642d0f8803866b..c764c97369a95c4aa9a4752a04f61e9e69b166d0 100644
278--- a/docs/audio_driver.md
279+++ b/docs/drivers/audio.md
280@@ -1,6 +1,6 @@
281 # Audio Driver {#audio-driver}
282
283diff --git a/docs/eeprom_driver.md b/docs/drivers/eeprom.md
284rename from docs/eeprom_driver.md
285rename to docs/drivers/eeprom.md
286index 6d13377ed8d085d63053efd474d15ae4d4d86fae..82630c501d1166b60d518d9c21d8f5df8f047aeb 100644
287--- a/docs/eeprom_driver.md
288+++ b/docs/drivers/eeprom.md
289@@ -133,7 +133,7 @@ If your MCU does not boot after swapping to the EFL wear-leveling driver, it's l
290
291 ## Wear-leveling SPI Flash Driver Configuration {#wear_leveling-flash_spi-driver-configuration}
292
293-This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the [flash driver](flash_driver) documentation for more information.
294+This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the [flash driver](flash) documentation for more information.
295
296 Configurable options in your keyboard's `config.h`:
297
298diff --git a/docs/flash_driver.md b/docs/drivers/flash.md
299rename from docs/flash_driver.md
300rename to docs/drivers/flash.md
301diff --git a/docs/gpio_control.md b/docs/drivers/gpio.md
302rename from docs/gpio_control.md
303rename to docs/drivers/gpio.md
304diff --git a/docs/i2c_driver.md b/docs/drivers/i2c.md
305rename from docs/i2c_driver.md
306rename to docs/drivers/i2c.md
307index ccc21137b389ce875ce3ada27bf899d52248f064..10949ed59e088dbb365dcf2ff76d7657ed016cb9 100644
308--- a/docs/i2c_driver.md
309+++ b/docs/drivers/i2c.md
310@@ -4,7 +4,7 @@ The I2C Master drivers used in QMK have a set of common functions to allow porta
311
312 ## Usage {#usage}
313
314-In most cases, the I2C Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](feature_oled_driver).
315+In most cases, the I2C Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](../features/oled_driver).
316
317 However, if you need to use the driver standalone, add the following to your `rules.mk`:
318
319diff --git a/docs/serial_driver.md b/docs/drivers/serial.md
320rename from docs/serial_driver.md
321rename to docs/drivers/serial.md
322index ce2fc7a46c4d4167305669c3eb61879c3a55291e..364e951b8698a271e11a2e05b75e3f66df261185 100644
323--- a/docs/serial_driver.md
324+++ b/docs/drivers/serial.md
325@@ -1,6 +1,6 @@
326 # 'serial' Driver
327
328diff --git a/docs/spi_driver.md b/docs/drivers/spi.md
329rename from docs/spi_driver.md
330rename to docs/drivers/spi.md
331index b77e2dbb46f7344e72280fd2ebafa0087581ee6a..ddc35de8511a736edc7ee5797a64c1aeaed244ab 100644
332--- a/docs/spi_driver.md
333+++ b/docs/drivers/spi.md
334@@ -4,7 +4,7 @@ The SPI Master drivers used in QMK have a set of common functions to allow porta
335
336 ## Usage {#usage}
337
338-In most cases, the SPI Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](feature_oled_driver).
339+In most cases, the SPI Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](../features/oled_driver).
340
341 However, if you need to use the driver standalone, add the following to your `rules.mk`:
342
343diff --git a/docs/uart_driver.md b/docs/drivers/uart.md
344rename from docs/uart_driver.md
345rename to docs/drivers/uart.md
346diff --git a/docs/ws2812_driver.md b/docs/drivers/ws2812.md
347rename from docs/ws2812_driver.md
348rename to docs/drivers/ws2812.md
349index c445e2dbf65d8947cc29181f8de2f9e212732858..61addf1917ed1e19a5d2ea8ab6bdfbc13e82f20a 100644
350--- a/docs/ws2812_driver.md
351+++ b/docs/drivers/ws2812.md
352@@ -10,7 +10,7 @@ The LEDs can be chained together, and the remaining data is passed on to the nex
353
354 ## Usage {#usage}
355
356-In most cases, the WS2812 driver code is automatically included if you are using either the [RGBLight](feature_rgblight) or [RGB Matrix](feature_rgb_matrix) feature with the `ws2812` driver set, and you would use those APIs instead.
357+In most cases, the WS2812 driver code is automatically included if you are using either the [RGBLight](../features/rgblight) or [RGB Matrix](../features/rgb_matrix) feature with the `ws2812` driver set, and you would use those APIs instead.
358
359 However, if you need to use the driver standalone, add the following to your `rules.mk`:
360
361diff --git a/docs/easy_maker.md b/docs/easy_maker.md
362index 6a2f00686fd535d96b720adf4c8893ae7f68e1a0..e94477322b3b1521bd9302185c76ef217f6742a4 100644
363--- a/docs/easy_maker.md
364+++ b/docs/easy_maker.md
365@@ -5,7 +5,7 @@ Have you ever needed an easy way to program a controller, such as a Proton C or
366 There are different styles of Easy Maker available depending on your needs:
367
368 * [Direct Pin](https://config.qmk.fm/#/?filter=ez_maker/direct) - Connect a single switch to a single pin
369-* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](feature_backlight) control
370+* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](features/backlight) control
371 * Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
372 * Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Capslock LED
373 * Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder
374diff --git a/docs/faq_build.md b/docs/faq_build.md
375index 7fafff10664c89e850b110e8120571387ad08f10..54ed576c708aaf4a32d873c77977ead1c2b82eab 100644
376--- a/docs/faq_build.md
377+++ b/docs/faq_build.md
378@@ -66,4 +66,4 @@ Due to how EEPROM works on ARM based chips, saved settings may no longer be vali
379diff --git a/docs/faq_debug.md b/docs/faq_debug.md
380index e22bc5d9ced6234145029f98e764af8e10ceb455..36374974dfd09c44b7d1c4edee731bbfd2eb183e 100644
381--- a/docs/faq_debug.md
382+++ b/docs/faq_debug.md
383@@ -4,7 +4,7 @@ This page details various common questions people have about troubleshooting the
384
385 ## Debugging {#debugging}
386
387diff --git a/docs/faq_keymap.md b/docs/faq_keymap.md
388index 0070b6d1de19d95098102f3afbd66fb4152437bb..56ccc6f6ccf51fc27694bff2c48692daeb67a344 100644
389--- a/docs/faq_keymap.md
390+++ b/docs/faq_keymap.md
391@@ -45,7 +45,7 @@ QMK has a couple of features which allow you to change the behavior of your keyb
392 Refer to the EEPROM clearing methods above, which should return those keys to normal operation. If that doesn't work, look here:
393
394 * [Magic Keycodes](keycodes_magic)
395-* [Command](feature_command)
396+* [Command](features/command)
397
398 ## The Menu Key Isn't Working
399
400@@ -86,7 +86,7 @@ Old vintage mechanical keyboards occasionally have lock switches but modern ones
401
402 ## Input Special Characters Other Than ASCII like Cédille 'Ç'
403
404-See the [Unicode](feature_unicode) feature.
405+See the [Unicode](features/unicode) feature.
406
407 ## `Fn` Key on macOS
408
409@@ -130,7 +130,7 @@ https://github.com/tekezo/Karabiner/issues/403
410
411 ## Esc and <code>`</code> on a Single Key
412
413-See the [Grave Escape](feature_grave_esc) feature.
414+See the [Grave Escape](features/grave_esc) feature.
415
416 ## Eject on Mac OSX
417
418diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md
419index 50dc0bb2815dd8516052333c264efde5b03c374a..7f5a10d1c13dfc68eb8d5ac463941c645cd8944c 100644
420--- a/docs/feature_advanced_keycodes.md
421+++ b/docs/feature_advanced_keycodes.md
422@@ -160,7 +160,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
423 return true;
424 };
425 ```
426-Alternatively, this can be done with [Key Overrides](feature_key_overrides#simple-example).
427+Alternatively, this can be done with [Key Overrides](features/key_overrides#simple-example).
428
429 # Advanced topics {#advanced-topics}
430
431@@ -184,4 +184,4 @@ This page used to encompass a large set of features. We have moved many sections
432
433 ## Key Overrides {#key-overrides}
434
435-* [Key Overrides](feature_key_overrides)
436+* [Key Overrides](features/key_overrides)
437diff --git a/docs/feature_converters.md b/docs/feature_converters.md
438index 9b2d027a66552b643c8a02dba95f99849e380250..229d1007ab4c9d94952c0993a56e89be1cff1204 100644
439--- a/docs/feature_converters.md
440+++ b/docs/feature_converters.md
441@@ -39,7 +39,7 @@ qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c
442 You can also add the same `CONVERT_TO=<target>` to your keymap's `rules.mk`, which will accomplish the same thing.
443
444 ::: tip
445-If you get errors about `PORTB/DDRB`, etc not being defined, you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
446+If you get errors about `PORTB/DDRB`, etc not being defined, you'll need to convert the keyboard's code to use the [GPIO Controls](drivers/gpio) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
447 :::
448
449 ### Conditional Configuration
450@@ -118,11 +118,11 @@ The following defaults are based on what has been implemented for STM32 boards.
451
452 | Feature | Notes |
453 |----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
454-| [Audio](feature_audio) | Enabled |
455-| [RGB Lighting](feature_rgblight) | Disabled |
456-| [Backlight](feature_backlight) | Forces [task driven PWM](feature_backlight#software-pwm-driver) until ARM can provide automatic configuration |
457+| [Audio](features/audio) | Enabled |
458+| [RGB Lighting](features/rgblight) | Disabled |
459+| [Backlight](features/backlight) | Forces [task driven PWM](features/backlight#software-pwm-driver) until ARM can provide automatic configuration |
460 | USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
461-| [Split keyboards](feature_split_keyboard) | Partial - heavily dependent on enabled features |
462+| [Split keyboards](features/split_keyboard) | Partial - heavily dependent on enabled features |
463
464 ### Adafruit KB2040 {#kb2040}
465
466@@ -130,10 +130,10 @@ The following defaults are based on what has been implemented for [RP2040](platf
467
468 | Feature | Notes |
469 |----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
470-| [RGB Lighting](feature_rgblight) | Enabled via `PIO` vendor driver |
471-| [Backlight](feature_backlight) | Forces [task driven PWM](feature_backlight#software-pwm-driver) until ARM can provide automatic configuration |
472+| [RGB Lighting](features/rgblight) | Enabled via `PIO` vendor driver |
473+| [Backlight](features/backlight) | Forces [task driven PWM](features/backlight#software-pwm-driver) until ARM can provide automatic configuration |
474 | USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
475-| [Split keyboards](feature_split_keyboard) | Partial via `PIO` vendor driver - heavily dependent on enabled features |
476+| [Split keyboards](features/split_keyboard) | Partial via `PIO` vendor driver - heavily dependent on enabled features |
477
478 ### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi {#promicro_rp2040 }
479
480diff --git a/docs/feature_eeprom.md b/docs/feature_eeprom.md
481index 63026d3c102b310924abc95f3f959822d3663800..2912407ac7659aa9cddd414de402ddf04a7ae519 100644
482--- a/docs/feature_eeprom.md
483+++ b/docs/feature_eeprom.md
484@@ -109,7 +109,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
485 }
486 }
487 ```
488diff --git a/docs/feature_layers.md b/docs/feature_layers.md
489index 77b6ef95313082d465865f15fbed73a5fcceadef..fe9932fadbe6e5959c6c4456af709dfdf74b1bdb 100644
490--- a/docs/feature_layers.md
491+++ b/docs/feature_layers.md
492@@ -27,7 +27,7 @@ For a similar reason, the `layer` argument of `LM()` is also limited to layers 0
493 |:---------------:|:----------------------:|:------------------------:|:----------------:|
494 | ❌ | ❌ | ❌ | ✅ |
495
496diff --git a/docs/feature_macros.md b/docs/feature_macros.md
497index d5a830c0ef521fd788477049cca2bb17353fbe1c..055bb3ff8f72e5e0b7447a7815be6a1eb262cc98 100644
498--- a/docs/feature_macros.md
499+++ b/docs/feature_macros.md
500@@ -86,7 +86,7 @@ All objects have one required key: `action`. This tells QMK what the object does
501 Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_` prefix when listing keycodes.
502
503 * `beep`
504- * Play a bell if the keyboard has [audio enabled](feature_audio).
505+ * Play a bell if the keyboard has [audio enabled](features/audio).
506 * Example: `{"action": "beep"}`
507 * `delay`
508 * Pause macro playback. Duration is specified in milliseconds (ms).
509@@ -108,7 +108,7 @@ Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_`
510
511 ### `SEND_STRING()` & `process_record_user`
512
513-See also: [Send String](feature_send_string)
514+See also: [Send String](features/send_string)
515
516diff --git a/docs/feature_audio.md b/docs/features/audio.md
517rename from docs/feature_audio.md
518rename to docs/features/audio.md
519index ec28860ae9fa4439e0001eeab6a5aa45ef2150c0..2f5e5b2d98199e95a1de7f7e3a91345a1f370d24 100644
520--- a/docs/feature_audio.md
521+++ b/docs/features/audio.md
522@@ -27,7 +27,7 @@ per speaker is - for example with a piezo buzzer - the black lead to Ground, and
523
524
525 ## ARM based boards
526-for more technical details, see the notes on [Audio driver](audio_driver).
527+for more technical details, see the notes on [Audio driver](../drivers/audio).
528
529 <!-- because I'm not sure where to fit this in: https://waveeditonline.com/ -->
530 ### DAC (basic)
531@@ -196,7 +196,7 @@ These keycodes turn all of the audio functionality on and off. Turning it off m
532 |`GUITAR_SONG` | `GUITAR_SOUND` |Plays when the guitar music mode is selected (process_music.c) |
533 |`VIOLIN_SONG` | `VIOLIN_SOUND` |Plays when the violin music mode is selected (process_music.c) |
534 |`MAJOR_SONG` | `MAJOR_SOUND` |Plays when the major music mode is selected (process_music.c) |
535-|`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). |
536+|`DEFAULT_LAYER_SONGS` | *Not defined* |Plays song when switched default layers with [`set_single_persistent_default_layer(layer)`](../ref_functions#setting-the-persistent-default-layer)(quantum.c). |
537 |`SENDSTRING_BELL` | *Not defined* |Plays chime when the "enter" ("\a") character is sent (send_string.c) |
538
539 ## Tempo
540@@ -354,7 +354,7 @@ You can configure the default, min and max frequencies, the stepping and built i
541
542 ## MIDI Functionality
543
544-See [MIDI](feature_midi)
545+See [MIDI](midi)
546
547 ## Audio Keycodes
548
549diff --git a/docs/feature_auto_shift.md b/docs/features/auto_shift.md
550rename from docs/feature_auto_shift.md
551rename to docs/features/auto_shift.md
552index 53635e39f0679c8570a9550f0120c3d75e771ec6..45b9048f03913a082029eb69b4e399d0c18c5364 100644
553--- a/docs/feature_auto_shift.md
554+++ b/docs/features/auto_shift.md
555@@ -294,7 +294,7 @@ Holding and releasing a Tap Hold key without pressing another key will ordinaril
556 result in only the hold. With `retro shift` enabled this action will instead
557 produce a shifted version of the tap keycode on release.
558
559-It does not require [Retro Tapping](tap_hold#retro-tapping) to be enabled, and
560+It does not require [Retro Tapping](../tap_hold#retro-tapping) to be enabled, and
561 if both are enabled the state of `retro tapping` will only apply if the tap keycode
562 is not matched by Auto Shift. `RETRO_TAPPING_PER_KEY` and its corresponding
563 function, however, are checked before `retro shift` is applied.
564@@ -318,10 +318,10 @@ Without a value set, holds of any length without an interrupting key will produc
565
566 This value (if set) must be greater than one's `TAPPING_TERM`, as the key press
567 must be designated as a 'hold' by `process_tapping` before we send the modifier.
568-[Per-key tapping terms](tap_hold#tapping-term) can be used as a workaround.
569+[Per-key tapping terms](../tap_hold#tapping-term) can be used as a workaround.
570 There is no such limitation in regards to `AUTO_SHIFT_TIMEOUT` for normal keys.
571
572-**Note:** Tap Holds must be added to Auto Shift, see [here.](feature_auto_shift#auto-shift-per-key)
573+**Note:** Tap Holds must be added to Auto Shift, see [here.](auto_shift#auto-shift-per-key)
574 `IS_RETRO` may be helpful if one wants all Tap Holds retro shifted.
575
576 ### Retro Shift and Tap Hold Configurations
577@@ -330,7 +330,7 @@ Tap Hold Configurations work a little differently when using Retro Shift.
578 Referencing `TAPPING_TERM` makes little sense, as holding longer would result in
579 shifting one of the keys.
580
581-`RETRO_SHIFT` enables [`PERMISSIVE_HOLD`-like behaviour](tap_hold#permissive-hold) (even if not explicitly enabled) on all mod-taps for which `RETRO_SHIFT` applies.
582+`RETRO_SHIFT` enables [`PERMISSIVE_HOLD`-like behaviour](../tap_hold#permissive-hold) (even if not explicitly enabled) on all mod-taps for which `RETRO_SHIFT` applies.
583
584 ## Using Auto Shift Setup
585
586diff --git a/docs/feature_autocorrect.md b/docs/features/autocorrect.md
587rename from docs/feature_autocorrect.md
588rename to docs/features/autocorrect.md
589index 1ad582207aa882ab2cb3bd9719138b745d46c852..df3f2e0fd8f846781d601a3a85444a957f30c28c 100644
590--- a/docs/feature_autocorrect.md
591+++ b/docs/features/autocorrect.md
592@@ -113,7 +113,7 @@ Additionally, you can use the `AC_TOGG` keycode to toggle the on/off status for
593diff --git a/docs/feature_backlight.md b/docs/features/backlight.md
594rename from docs/feature_backlight.md
595rename to docs/features/backlight.md
596index 545d7be9495fcdafc24170077b98dccde78d7f32..94726756fdb97bc90101043da3fd23f538be7300 100644
597--- a/docs/feature_backlight.md
598+++ b/docs/features/backlight.md
599@@ -1,6 +1,6 @@
600 # Backlighting {#backlighting}
601
602diff --git a/docs/feature_bluetooth.md b/docs/features/bluetooth.md
603rename from docs/feature_bluetooth.md
604rename to docs/features/bluetooth.md
605index 7562a75447d264a618eb15dcd078ab7b387c8292..1dbf15f4e104bff87eb1e93f593c6a3a5c7afbb7 100644
606--- a/docs/feature_bluetooth.md
607+++ b/docs/features/bluetooth.md
608@@ -26,7 +26,7 @@ A Bluefruit UART friend can be converted to an SPI friend, however this [require
609 <!-- FIXME: Document bluetooth support more completely. -->
610 ## Bluetooth Rules.mk Options
611
612-The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](reference_glossary#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
613+The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](../reference_glossary#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
614
615 Add the following to your `rules.mk`:
616
617diff --git a/docs/feature_bootmagic.md b/docs/features/bootmagic.md
618rename from docs/feature_bootmagic.md
619rename to docs/features/bootmagic.md
620index df0344ee8e9b5d3dfdcc09b1cd00514f1aefeea0..49fae5ba45073966c24c22e4a42954091f6e1efc 100644
621--- a/docs/feature_bootmagic.md
622+++ b/docs/features/bootmagic.md
623@@ -25,7 +25,7 @@ Using Bootmagic will **always reset** the EEPROM, so you will lose any settings
624
625 ## Split Keyboards
626
627diff --git a/docs/feature_caps_word.md b/docs/features/caps_word.md
628rename from docs/feature_caps_word.md
629rename to docs/features/caps_word.md
630index 666edecb6ecc17cf00032f560b591aedb113b649..15361aab962bc48374c3402679a8ace7504c3a05 100644
631--- a/docs/feature_caps_word.md
632+++ b/docs/features/caps_word.md
633@@ -62,7 +62,7 @@ Next, use one the following methods to activate Caps Word:
634
635 * **Custom activation**: You can activate Caps Word from code by calling
636 `caps_word_on()`. This may be used to activate Caps Word through [a
637- combo](feature_combo) or [tap dance](feature_tap_dance) or any means
638+ combo](combo) or [tap dance](tap_dance) or any means
639 you like.
640
641 ### Troubleshooting: Command {#troubleshooting-command}
642@@ -71,7 +71,7 @@ When using `BOTH_SHIFTS_TURNS_ON_CAPS_WORD`, you might see a compile message
643 **"BOTH_SHIFTS_TURNS_ON_CAPS_WORD and Command should not be enabled at the same
644 time, since both use the Left Shift + Right Shift key combination."**
645
646-Many keyboards enable the [Command feature](feature_command), which by
647+Many keyboards enable the [Command feature](command), which by
648 default is also activated using the Left Shift + Right Shift key combination. To
649 fix this conflict, please disable Command by adding in rules.mk:
650
651diff --git a/docs/feature_combo.md b/docs/features/combo.md
652rename from docs/feature_combo.md
653rename to docs/features/combo.md
654index b49a4448049e7d53f2d6f7ca225401325185d18d..bdb8c4b15fcb32ae6072084044fa82e118aa46a1 100644
655--- a/docs/feature_combo.md
656+++ b/docs/features/combo.md
657@@ -18,7 +18,7 @@ combo_t key_combos[] = {
658 This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys.
659
660 ## Advanced Keycodes Support
661-Advanced keycodes, such as [Mod-Tap](mod_tap) and [Tap Dance](feature_tap_dance) are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.:
662+Advanced keycodes, such as [Mod-Tap](../mod_tap) and [Tap Dance](tap_dance) are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.:
663
664 ```c
665 const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END};
666@@ -99,7 +99,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
667
668 This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings.
669
670diff --git a/docs/feature_command.md b/docs/features/command.md
671rename from docs/feature_command.md
672rename to docs/features/command.md
673index 4aba9cfb6301feba532c19a88f82d729e940c2fc..7ad45103c78678e6b04c7a1fe6ec4397d204255d 100644
674--- a/docs/feature_command.md
675+++ b/docs/features/command.md
676@@ -1,6 +1,6 @@
677 # Command
678
679diff --git a/docs/feature_digitizer.md b/docs/features/digitizer.md
680rename from docs/feature_digitizer.md
681rename to docs/features/digitizer.md
682index 475d5b4d51f67f450cc32a41e25bbc618b5e0282..e52487763689452dd6677a3c5692a2405fbbf791 100644
683--- a/docs/feature_digitizer.md
684+++ b/docs/features/digitizer.md
685@@ -1,6 +1,6 @@
686 # Digitizer {#digitizer}
687
688-Digitizers allow the mouse cursor to be placed at absolute coordinates, unlike the [Pointing Device](feature_pointing_device) feature which applies relative displacements.
689+Digitizers allow the mouse cursor to be placed at absolute coordinates, unlike the [Pointing Device](pointing_device) feature which applies relative displacements.
690
691 This feature implements a stylus device with a tip switch and barrel switch (generally equivalent to the primary and secondary mouse buttons respectively). Tip pressure is not currently implemented.
692
693diff --git a/docs/feature_dip_switch.md b/docs/features/dip_switch.md
694rename from docs/feature_dip_switch.md
695rename to docs/features/dip_switch.md
696diff --git a/docs/feature_dynamic_macros.md b/docs/features/dynamic_macros.md
697rename from docs/feature_dynamic_macros.md
698rename to docs/features/dynamic_macros.md
699diff --git a/docs/feature_encoders.md b/docs/features/encoders.md
700rename from docs/feature_encoders.md
701rename to docs/features/encoders.md
702diff --git a/docs/feature_grave_esc.md b/docs/features/grave_esc.md
703rename from docs/feature_grave_esc.md
704rename to docs/features/grave_esc.md