keyboard stuff
1[
2 {
3 "text": "Tutorial",
4 "items": [
5 { "text": "Introduction", "link": "/newbs" },
6 { "text": "Setup", "link": "/newbs_getting_started" },
7 { "text": "Building Your First Firmware", "link": "/newbs_building_firmware" },
8 { "text": "Flashing Firmware", "link": "/newbs_flashing" },
9 { "text": "Getting Help/Support", "link": "/support" },
10 { "text": "External Userspace", "link": "/newbs_external_userspace" },
11 { "text": "Other Resources", "link": "/newbs_learn_more_resources" },
12 { "text": "Syllabus", "link": "/syllabus" }
13 ]
14 },
15 {
16 "text": "FAQs",
17 "items": [
18 { "text": "General FAQ", "link": "/faq_general" },
19 { "text": "Build/Compile QMK", "link": "/faq_build" },
20 { "text": "Troubleshooting QMK", "link": "/faq_misc" },
21 { "text": "Debugging QMK", "link": "/faq_debug" },
22 { "text": "Keymap FAQ", "link": "/faq_keymap" },
23 { "text": "Squeezing Space from AVR", "link": "/squeezing_avr" },
24 { "text": "Glossary", "link": "/reference_glossary" }
25 ]
26 },
27 {
28 "text": "Licensing",
29 "items": [
30 { "text": "License Violations", "link": "/license_violations" },
31 { "text": "Proprietary Libraries", "link": "/proprietary_libs" }
32 ]
33 },
34 {
35 "text": "Configurator",
36 "items": [
37 { "text": "Overview", "link": "/newbs_building_firmware_configurator" },
38 { "text": "Step by Step", "link": "/configurator_step_by_step" },
39 { "text": "Troubleshooting", "link": "/configurator_troubleshooting" },
40 { "text": "Architecture", "link": "/configurator_architecture" },
41 {
42 "text": "QMK API",
43 "items": [
44 { "text": "Overview", "link": "/api_overview" },
45 { "text": "API Documentation", "link": "/api_docs" },
46 { "text": "Keyboard Support", "link": "/reference_configurator_support" },
47 { "text": "Adding Default Keymaps", "link": "/configurator_default_keymaps" }
48 ]
49 }
50 ]
51 },
52 {
53 "text": "CLI",
54 "items": [
55 { "text": "Overview", "link": "/cli" },
56 { "text": "Configuration", "link": "/cli_configuration" },
57 { "text": "Commands", "link": "/cli_commands" },
58 { "text": "Tab Completion", "link": "/cli_tab_complete" }
59 ]
60 },
61 {
62 "text": "Using QMK",
63 "items": [
64 {
65 "text": "Guides",
66 "items": [
67 { "text": "Customizing Functionality", "link": "/custom_quantum_functions" },
68 { "text": "Driver Installation with Zadig", "link": "/driver_installation_zadig" },
69 { "text": "Community Modules", "link": "/features/community_modules" },
70 { "text": "Keymap Overview", "link": "/keymap" },
71 {
72 "text": "Development Environments",
73 "items": [{ "text": "Docker Guide", "link": "/getting_started_docker" }]
74 },
75 { "text": "Flashing", "link": "/flashing" },
76 {
77 "text": "IDEs",
78 "items": [
79 { "text": "Using Eclipse with QMK", "link": "/other_eclipse" },
80 { "text": "Using VSCode with QMK", "link": "/other_vscode" }
81 ]
82 },
83 {
84 "text": "Git Best Practices",
85 "items": [
86 { "text": "Introduction", "link": "/newbs_git_best_practices" },
87 { "text": "Your Fork", "link": "/newbs_git_using_your_master_branch" },
88 { "text": "Merge Conflicts", "link": "/newbs_git_resolving_merge_conflicts" },
89 { "text": "Fixing Your Branch", "link": "/newbs_git_resynchronize_a_branch" }
90 ]
91 }
92 ]
93 },
94 {
95 "text": "Simple Keycodes",
96 "items": [
97 { "text": "Full List", "link": "/keycodes" },
98 { "text": "Basic Keycodes", "link": "/keycodes_basic" },
99 { "text": "Language-Specific Keycodes", "link": "/reference_keymap_extras" },
100 { "text": "Modifier Keys", "link": "/feature_advanced_keycodes" },
101 { "text": "Quantum Keycodes", "link": "/quantum_keycodes" },
102 { "text": "Magic Keycodes", "link": "/keycodes_magic" }
103 ]
104 },
105 {
106 "text": "Advanced Keycodes",
107 "items": [
108 { "text": "Command", "link": "/features/command" },
109 { "text": "Dynamic Macros", "link": "/features/dynamic_macros" },
110 { "text": "Grave Escape", "link": "/features/grave_esc" },
111 { "text": "Leader Key", "link": "/features/leader_key" },
112 { "text": "Mod-Tap", "link": "/mod_tap" },
113 { "text": "Macros", "link": "/feature_macros" },
114 { "text": "Mouse Keys", "link": "/features/mouse_keys" },
115 { "text": "Programmable Button", "link": "/features/programmable_button" },
116 { "text": "Repeat Key", "link": "/features/repeat_key" },
117 { "text": "Space Cadet Shift", "link": "/features/space_cadet" },
118 { "text": "US ANSI Shifted Keys", "link": "/keycodes_us_ansi_shifted" }
119 ]
120 },
121 {
122 "text": "Software Features",
123 "items": [
124 { "text": "Auto Shift", "link": "/features/auto_shift" },
125 { "text": "Autocorrect", "link": "/features/autocorrect" },
126 { "text": "Caps Word", "link": "/features/caps_word" },
127 { "text": "Combos", "link": "/features/combo" },
128 { "text": "Debounce API", "link": "/feature_debounce_type" },
129 { "text": "Digitizer", "link": "/features/digitizer" },
130 { "text": "EEPROM", "link": "/feature_eeprom" },
131 { "text": "Key Lock", "link": "/features/key_lock" },
132 { "text": "Key Overrides", "link": "/features/key_overrides" },
133 { "text": "Layers", "link": "/feature_layers" },
134 { "text": "Layer Lock", "link": "/features/layer_lock" },
135 { "text": "One Shot Keys", "link": "/one_shot_keys" },
136 { "text": "OS Detection", "link": "/features/os_detection" },
137 { "text": "Raw HID", "link": "/features/rawhid" },
138 { "text": "Secure", "link": "/features/secure" },
139 { "text": "Send String", "link": "/features/send_string" },
140 { "text": "Sequencer", "link": "/features/sequencer" },
141 { "text": "Swap Hands", "link": "/features/swap_hands" },
142 { "text": "Tap Dance", "link": "/features/tap_dance" },
143 { "text": "Tap-Hold Configuration", "link": "/tap_hold" },
144 { "text": "Tri Layer", "link": "/features/tri_layer" },
145 { "text": "Unicode", "link": "/features/unicode" },
146 { "text": "Userspace", "link": "/feature_userspace" },
147 { "text": "WPM Calculation", "link": "/features/wpm" }
148 ]
149 },
150 {
151 "text": "Hardware Features",
152 "items": [
153 {
154 "text": "Displays",
155 "items": [
156 {
157 "text": "Quantum Painter",
158 "link": "quantum_painter",
159 "items": [
160 { "text": "Quantum Painter LVGL Integration", "link": "/quantum_painter_lvgl" }
161 ]
162 },
163 { "text": "HD44780 LCD Driver", "link": "/features/hd44780" },
164 { "text": "ST7565 LCD Driver", "link": "/features/st7565" },
165 { "text": "OLED Driver", "link": "/features/oled_driver" }
166 ]
167 },
168 {
169 "text": "Lighting",
170 "items": [
171 { "text": "Backlight", "link": "/features/backlight" },
172 { "text": "LED Matrix", "link": "/features/led_matrix" },
173 { "text": "RGB Lighting", "link": "/features/rgblight" },
174 { "text": "RGB Matrix", "link": "/features/rgb_matrix" }
175 ]
176 },
177 { "text": "Audio", "link": "/features/audio" },
178 { "text": "Battery", "link": "/features/battery" },
179 { "text": "Bootmagic", "link": "/features/bootmagic" },
180 { "text": "Converters", "link": "/feature_converters" },
181 { "text": "Custom Matrix", "link": "/custom_matrix" },
182 { "text": "DIP Switch", "link": "/features/dip_switch" },
183 { "text": "Encoders", "link": "/features/encoders" },
184 { "text": "Haptic Feedback", "link": "/features/haptic_feedback" },
185 { "text": "Joystick", "link": "/features/joystick" },
186 { "text": "LED Indicators", "link": "/features/led_indicators" },
187 { "text": "MIDI", "link": "/features/midi" },
188 { "text": "Pointing Device", "link": "/features/pointing_device" },
189 { "text": "PS/2 Mouse", "link": "/features/ps2_mouse" },
190 { "text": "Split Keyboard", "link": "/features/split_keyboard" },
191 { "text": "Stenography", "link": "/features/stenography" },
192 { "text": "Wireless", "link": "/features/wireless" }
193 ]
194 },
195 {
196 "text": "Keyboard Building",
197 "items": [
198 { "text": "Easy Maker for One Offs", "link": "/easy_maker" },
199 { "text": "Porting Keyboards", "link": "/porting_your_keyboard_to_qmk" },
200 { "text": "Hand Wiring Guide", "link": "/hand_wire" },
201 { "text": "ISP Flashing Guide", "link": "/isp_flashing_guide" }
202 ]
203 }
204 ]
205 },
206 {
207 "text": "Developing QMK",
208 "items": [
209 { "text": "PR Checklist", "link": "/pr_checklist" },
210 {
211 "text": "Breaking Changes",
212 "items": [
213 { "text": "Overview", "link": "/breaking_changes" },
214 { "text": "My Pull Request Was Flagged", "link": "/breaking_changes_instructions" },
215 {
216 "text": "Most Recent ChangeLog",
217 "link": "/ChangeLog/20251130"
218 },
219 { "text": "Past Breaking Changes", "link": "/breaking_changes_history" },
220 { "text": "Deprecation Policy", "link": "/support_deprecation_policy" }
221 ]
222 },
223
224 {
225 "text": "C Development",
226 "items": [
227 { "text": "ARM Debugging Guide", "link": "/arm_debugging" },
228 { "text": "Coding Conventions", "link": "/coding_conventions_c" },
229 { "text": "Compatible Microcontrollers", "link": "/compatible_microcontrollers" },
230 {
231 "text": "Drivers",
232 "link": "hardware_drivers",
233 "items": [
234 { "text": "ADC Driver", "link": "/drivers/adc" },
235 { "text": "APA102 Driver", "link": "/drivers/apa102" },
236 { "text": "Audio Driver", "link": "/drivers/audio" },
237 { "text": "Battery Driver", "link": "/drivers/battery" },
238 { "text": "EEPROM Driver", "link": "/drivers/eeprom" },
239 { "text": "Flash Driver", "link": "/drivers/flash" },
240 { "text": "I2C Driver", "link": "/drivers/i2c" },
241 { "text": "'serial' Driver", "link": "/drivers/serial" },
242 { "text": "SPI Driver", "link": "/drivers/spi" },
243 { "text": "UART Driver", "link": "/drivers/uart" },
244 { "text": "WS2812 Driver", "link": "/drivers/ws2812" }
245 ]
246 },
247 { "text": "GPIO Controls", "link": "/drivers/gpio" },
248 { "text": "Keyboard Guidelines", "link": "/hardware_keyboard_guidelines" }
249 ]
250 },
251
252 {
253 "text": "Python Development",
254 "items": [
255 { "text": "Coding Conventions", "link": "/coding_conventions_python" },
256 { "text": "QMK CLI Development", "link": "/cli_development" }
257 ]
258 },
259
260 {
261 "text": "Configurator Development",
262 "items": [
263 {
264 "text": "QMK API",
265 "items": [
266 { "text": "Development Environment", "link": "/api_development_environment" },
267 { "text": "Architecture Overview", "link": "/api_development_overview" }
268 ]
269 }
270 ]
271 },
272
273 {
274 "text": "Hardware Platform Development",
275 "items": [
276 {
277 "text": "Arm/ChibiOS",
278 "items": [
279 { "text": "Selecting an MCU", "link": "/platformdev_selecting_arm_mcu" },
280 { "text": "Early initialization", "link": "/platformdev_chibios_earlyinit" },
281 { "text": "Raspberry Pi RP2040", "link": "/platformdev_rp2040" },
282 { "text": "Proton C", "link": "/platformdev_proton_c" },
283 { "text": "WeAct Blackpill F4x1", "link": "/platformdev_blackpill_f4x1" }
284 ]
285 }
286 ]
287 },
288
289 {
290 "text": "QMK Reference",
291 "items": [
292 { "text": "Contributing to QMK", "link": "/contributing" },
293 { "text": "Config Options", "link": "/config_options" },
294 { "text": "Data Driven Configuration", "link": "/data_driven_config" },
295 { "text": "Make Documentation", "link": "/getting_started_make_guide" },
296 { "text": "Documentation Best Practices", "link": "/documentation_best_practices" },
297 { "text": "Documentation Templates", "link": "/documentation_templates" },
298 { "text": "Community Layouts", "link": "/feature_layouts" },
299 { "text": "Unit Testing", "link": "/unit_testing" },
300 { "text": "Useful Functions", "link": "/ref_functions" },
301 { "text": "info.json Format", "link": "/reference_info_json" }
302 ]
303 },
304
305 {
306 "text": "For a Deeper Understanding",
307 "items": [
308 { "text": "How Keyboards Work", "link": "/how_keyboards_work" },
309 { "text": "How a Matrix Works", "link": "/how_a_matrix_works" },
310 { "text": "Understanding QMK", "link": "/understanding_qmk" }
311 ]
312 }
313 ]
314 }
315]