Deploying to gh-pages from @ qmk/qmk_firmware@942c2a8d5a 🚀

This commit is contained in:
QMK Bot committed 2024-06-13 03:32:29 +00:00
1 parent 363861f920
commit 2ff876ff7d
191 files changed
+570 -570

No files matched your search

+3 -3
View File
@@ -8,10 +8,10 @@
<meta name="generator" content="VitePress v1.1.3">
<link rel="preload stylesheet" href="/assets/style.No8zk9aC.css" as="style">
<script type="module" src="/assets/app.CnaJS-jf.js"></script>
<script type="module" src="/assets/app.D2yWvPhv.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.DyMmIvSC.js">
<link rel="modulepreload" href="/assets/chunks/theme.nRuh9auX.js">
<link rel="modulepreload" href="/assets/chunks/theme.CXwPehsq.js">
<link rel="modulepreload" href="/assets/coding_conventions_python.md.BV-OK1s5.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
@@ -82,7 +82,7 @@
<span class="line"><span></span></span>
<span class="line"><span>if not bar:</span></span>
<span class="line"><span> pass</span></span></code></pre></div><h1 id="decorators" tabindex="-1">Decorators <a class="header-anchor" href="#decorators" aria-label="Permalink to &quot;Decorators&quot;">​</a></h1><p>Use when appropriate. Try to avoid too much magic unless it helps with understanding.</p><h1 id="threading-and-multiprocessing" tabindex="-1">Threading and Multiprocessing <a class="header-anchor" href="#threading-and-multiprocessing" aria-label="Permalink to &quot;Threading and Multiprocessing&quot;">​</a></h1><p>Should be avoided. If you need this you will have to make a strong case before we merge your code.</p><h1 id="power-features" tabindex="-1">Power Features <a class="header-anchor" href="#power-features" aria-label="Permalink to &quot;Power Features&quot;">​</a></h1><p>Python is an extremely flexible language and gives you many fancy features such as custom metaclasses, access to bytecode, on-the-fly compilation, dynamic inheritance, object reparenting, import hacks, reflection, modification of system internals, etc.</p><p>Don&#39;t use these.</p><p>Performance is not a critical concern for us, and code understandability is. We want our codebase to be approachable by someone who only has a day or two to play with it. These features generally come with a cost to easy understanding, and we would prefer to have code that can be readily understood over faster or more compact code.</p><p>Note that some standard library modules use these techniques and it is ok to make use of those modules. But please keep readability and understandability in mind when using them.</p><h1 id="type-annotated-code" tabindex="-1">Type Annotated Code <a class="header-anchor" href="#type-annotated-code" aria-label="Permalink to &quot;Type Annotated Code&quot;">​</a></h1><p>For now we are not using any type annotation system, and would prefer that code remain unannotated. We may revisit this in the future.</p><h1 id="function-length" tabindex="-1">Function length <a class="header-anchor" href="#function-length" aria-label="Permalink to &quot;Function length&quot;">​</a></h1><p>Prefer small and focused functions.</p><p>We recognize that long functions are sometimes appropriate, so no hard limit is placed on function length. If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program.</p><p>Even if your long function works perfectly now, someone modifying it in a few months may add new behavior. This could result in bugs that are hard to find. Keeping your functions short and simple makes it easier for other people to read and modify your code.</p><p>You could find long and complicated functions when working with some code. Do not be intimidated by modifying existing code: if working with such a function proves to be difficult, you find that errors are hard to debug, or you want to use a piece of it in several different contexts, consider breaking up the function into smaller and more manageable pieces.</p><h1 id="fixmes" tabindex="-1">FIXMEs <a class="header-anchor" href="#fixmes" aria-label="Permalink to &quot;FIXMEs&quot;">​</a></h1><p>It is OK to leave FIXMEs in code. Why? Encouraging people to at least document parts of code that need to be thought out more (or that are confusing) is better than leaving this code undocumented.</p><p>All FIXMEs should be formatted like:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>FIXME(username): Revisit this code when the frob feature is done.</span></span></code></pre></div><p>...where username is your GitHub username.</p><h1 id="testing" tabindex="-1">Testing <a class="header-anchor" href="#testing" aria-label="Permalink to &quot;Testing&quot;">​</a></h1><p>We use a combination of Integration and Unit testing to ensure that the our code is as bug-free aLine truncated
<script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog_20220528.md\":\"BX3CCY1Z\",\"changelog_20210227.md\":\"BWOtCaeS\",\"breaking_changes.md\":\"BtdqWQlY\",\"breaking_changes_history.md\":\"CkzdD6x8\",\"changelog_20200829.md\":\"CoqrOffn\",\"coding_conventions_c.md\":\"DdrpXBEh\",\"changelog_20200229.md\":\"DNsowwM1\",\"changelog_20230827.md\":\"NSPhmB6l\",\"capabilities_inc.md\":\"Ca9zpMce\",\"api_docs.md\":\"CRoD6CbL\",\"arm_debugging.md\":\"BH-H2Ukz\",\"cli_tab_complete.md\":\"ChaxfzYo\",\"api_development_environment.md\":\"EhJClb9f\",\"changelog_20220226.md\":\"BWO5r_ec\",\"changelog_20201128.md\":\"7XXL02Bn\",\"api_overview.md\":\"0FPaUsMb\",\"changelog_20200530.md\":\"Dk-vRpTQ\",\"breaking_changes_instructions.md\":\"BAjIGeJb\",\"cli.md\":\"BLzAdA6l\",\"changelog_20230226.md\":\"Cg0AYxIn\",\"chibios_upgrade_instructions.md\":\"B5dMtL5R\",\"cli_development.md\":\"3xFA2OvS\",\"changelog_20190830.md\":\"Drtq3lMy\",\"changelog_20210529.md\":\"CR1YNfZX\",\"capabilities.md\":\"DgKwcj5n\",\"changelog_20240225.md\":\"B4-WrXj6\",\"data_driven_config.md\":\"BvLQ7P20\",\"configurator_step_by_step.md\":\"GvmPtScT\",\"configurator_architecture.md\":\"DEFTvTlS\",\"features_backlight.md\":\"D7R4FkYo\",\"changelog_20240526.md\":\"DAmAEDG5\",\"mod_tap.md\":\"C7wRKLcf\",\"cli_commands.md\":\"DGx-qNiE\",\"changelog_20220827.md\":\"DjPthqDk\",\"changelog_20230528.md\":\"nX9R48zP\",\"custom_matrix.md\":\"DMnRw_5l\",\"custom_quantum_functions.md\":\"DrUNiV1i\",\"compatible_microcontrollers.md\":\"6HA6FJZJ\",\"feature_layers.md\":\"8GwBUTZN\",\"feature_layouts.md\":\"qcy8hNMO\",\"feature_advanced_keycodes.md\":\"CX8dJkY-\",\"how_keyboards_work.md\":\"CB7z8ocb\",\"features_audio.md\":\"DWNYte3W\",\"keycodes.md\":\"hkOkKJPh\",\"features_auto_shift.md\":\"B9HLt3QM\",\"keycodes_magic.md\":\"CGO3hgMm\",\"keycodes_basic.md\":\"CHIeCvwn\",\"documentation_best_practices.md\":\"BtEjePaZ\",\"coding_conventions_python.md\":\"BV-OK1s5\",\"documentation_templates.md\":\"Bhkum0wD\",\"driver_installation_zadig.md\":\"CX9-BACt\",\"drivers_adc.md\":\"DzU8txf8\",\"drivers_apa102.md\":\"Qb-KXRpF\",\"drivers_audio.md\":\"mqaz6p5N\",\"drivers_eeprom.md\":\"B_6soqar\",\"drivers_flash.md\":\"DhWcHp8S\",\"drivers_gpio.md\":\"C5PvyJVh\",\"drivers_i2c.md\":\"Cuj87reB\",\"drivers_serial.md\":\"qxjytVdM\",\"drivers_uart.md\":\"BNBs-m3h\",\"drivers_spi.md\":\"tJVeIT7e\",\"drivers_ws2812.md\":\"D9E3Wb-Y\",\"easy_maker.md\":\"DAfbIK4w\",\"faq_build.md\":\"DL_WezA1\",\"faq_general.md\":\"BC3pFw4U\",\"faq_debug.md\":\"DuThValw\",\"faq_keymap.md\":\"BsEmEZTo\",\"cli_configuration.md\":\"CGSB128P\",\"faq_misc.md\":\"qGrhOTu4\",\"contributing.md\":\"DLsp4vSA\",\"configurator_default_keymaps.md\":\"B3v8dlHd\",\"changelog_20210828.md\":\"DNbHIuuM\",\"features_led_indicators.md\":\"CCZhjHe9\",\"platformdev_rp2040.md\":\"CYKYMDfc\",\"platformdev_selecting_arm_mcu.md\":\"aF4DUsvb\",\"platformdev_chibios_earlyinit.md\":\"BQJSTP3y\",\"platformdev_proton_c.md\":\"CDRuJBvD\",\"features_midi.md\":\"u3tHPteB\",\"porting_your_keyboard_to_qmk.md\":\"CGlGdFj4\",\"quantum_painter_lvgl.md\":\"DobNbSgA\",\"changelog_20211127.md\":\"ClUawWkq\",\"features_os_detection.md\":\"DZKTWvSd\",\"quantum_keycodes.md\":\"DM5WeUFF\",\"quantum_painter_qff.md\":\"kLNwshez\",\"changelog_20231126.md\":\"D2Ok5QAf\",\"features_oled_driver.md\":\"D9wJVdL1\",\"features_ps2_mouse.md\":\"CL_pA9sk\",\"features_digitizer.md\":\"DGIGZFVx\",\"features_dip_switch.md\":\"DtBOdc98\",\"features_dynamic_macros.md\":\"CrJ1vhBA\",\"features_secure.md\":\"BX7jFvW5\",\"features_haptic_feedback.md\":\"DS8CmC7e\",\"features_hd44780.md\":\"15K40o_e\",\"features_sequencer.md\":\"DkgqNCsQ\",\"features_space_cadet.md\":\"DmNfYRVJ\",\"features_split_keyboard.md\":\"mMTUzI5n\",\"features_joystick.md\":\"CW0gZHec\",\"other_vscode.md\":\"Di3vOySR\",\"features_stenography.md\":\"Bb_IhUGl\",\"features_leader_key.md\":\"DBQTnBRh\",\"features_key_overrides.md\":\"rVTP6kn9\",\"features_bluetooth.md\":\"CiAjl875\",\"pr_checklist.md\":\"BnLine truncated
<script>window.__VP_HASH_MAP__=JSON.parse("{\"coding_conventions_c.md\":\"DdrpXBEh\",\"coding_conventions_python.md\":\"BV-OK1s5\",\"changelog_20201128.md\":\"7XXL02Bn\",\"changelog_20200229.md\":\"DNsowwM1\",\"changelog_20200829.md\":\"CoqrOffn\",\"compatible_microcontrollers.md\":\"6HA6FJZJ\",\"changelog_20211127.md\":\"ClUawWkq\",\"changelog_20210227.md\":\"BWOtCaeS\",\"chibios_upgrade_instructions.md\":\"B5dMtL5R\",\"changelog_20220827.md\":\"DjPthqDk\",\"changelog_20190830.md\":\"Drtq3lMy\",\"changelog_20200530.md\":\"Dk-vRpTQ\",\"cli.md\":\"BLzAdA6l\",\"capabilities_inc.md\":\"Ca9zpMce\",\"faq_build.md\":\"DL_WezA1\",\"api_docs.md\":\"CRoD6CbL\",\"drivers_ws2812.md\":\"D9E3Wb-Y\",\"easy_maker.md\":\"DAfbIK4w\",\"drivers_uart.md\":\"BNBs-m3h\",\"faq_general.md\":\"BC3pFw4U\",\"capabilities.md\":\"DgKwcj5n\",\"drivers_eeprom.md\":\"B_6soqar\",\"drivers_flash.md\":\"DhWcHp8S\",\"drivers_gpio.md\":\"C5PvyJVh\",\"changelog_20240526.md\":\"DAmAEDG5\",\"faq_keymap.md\":\"BsEmEZTo\",\"faq_debug.md\":\"DuThValw\",\"api_overview.md\":\"0FPaUsMb\",\"changelog_20240225.md\":\"B4-WrXj6\",\"breaking_changes_instructions.md\":\"BAjIGeJb\",\"api_development_environment.md\":\"EhJClb9f\",\"changelog_20220528.md\":\"BX3CCY1Z\",\"cli_configuration.md\":\"CGSB128P\",\"changelog_20221126.md\":\"DpbrnXeC\",\"arm_debugging.md\":\"BH-H2Ukz\",\"changelog_20220226.md\":\"BWO5r_ec\",\"changelog_20230528.md\":\"nX9R48zP\",\"features_dip_switch.md\":\"DtBOdc98\",\"config_options.md\":\"DvMeqlpB\",\"features_caps_word.md\":\"BDQGM0-x\",\"features_combo.md\":\"C-GfDyXJ\",\"custom_matrix.md\":\"DMnRw_5l\",\"custom_quantum_functions.md\":\"DrUNiV1i\",\"data_driven_config.md\":\"BvLQ7P20\",\"features_command.md\":\"Byl9YoT7\",\"features_digitizer.md\":\"DGIGZFVx\",\"changelog_20231126.md\":\"D2Ok5QAf\",\"platformdev_rp2040.md\":\"CYKYMDfc\",\"features_haptic_feedback.md\":\"DS8CmC7e\",\"quantum_painter_qff.md\":\"kLNwshez\",\"syllabus.md\":\"B_ARGkLg\",\"quantum_painter_lvgl.md\":\"DobNbSgA\",\"newbs_git_resolving_merge_conflicts.md\":\"72w3BRmm\",\"newbs_git_resynchronize_a_branch.md\":\"YGDefQFx\",\"changelog_20230226.md\":\"Cg0AYxIn\",\"newbs_git_best_practices.md\":\"BI2-EVI5\",\"hardware_keyboard_guidelines.md\":\"CJevsanE\",\"features_unicode.md\":\"CsON-fJH\",\"cli_commands.md\":\"DGx-qNiE\",\"cli_development.md\":\"3xFA2OvS\",\"breaking_changes.md\":\"BtdqWQlY\",\"configurator_step_by_step.md\":\"GvmPtScT\",\"configurator_default_keymaps.md\":\"B3v8dlHd\",\"configurator_troubleshooting.md\":\"BxGLPT8G\",\"contributing.md\":\"DLsp4vSA\",\"changelog_20230827.md\":\"NSPhmB6l\",\"changelog_20210529.md\":\"CR1YNfZX\",\"configurator_architecture.md\":\"DEFTvTlS\",\"changelog_20210828.md\":\"DNbHIuuM\",\"breaking_changes_history.md\":\"CkzdD6x8\",\"faq_misc.md\":\"qGrhOTu4\",\"api_development_overview.md\":\"Dcey4ntL\",\"features_audio.md\":\"DWNYte3W\",\"features_auto_shift.md\":\"B9HLt3QM\",\"features_bluetooth.md\":\"CiAjl875\",\"features_autocorrect.md\":\"DHRDcuho\",\"features_backlight.md\":\"D7R4FkYo\",\"feature_userspace.md\":\"BsmY9yWw\",\"feature_layouts.md\":\"qcy8hNMO\",\"feature_macros.md\":\"By1M5R8G\",\"feature_layers.md\":\"8GwBUTZN\",\"feature_converters.md\":\"DFKin1io\",\"drivers_spi.md\":\"tJVeIT7e\",\"feature_eeprom.md\":\"a0eoTZm7\",\"features_bootmagic.md\":\"CeNSUsBQ\",\"feature_debounce_type.md\":\"CUrSp0Iy\",\"drivers_i2c.md\":\"Cuj87reB\",\"drivers_serial.md\":\"qxjytVdM\",\"feature_advanced_keycodes.md\":\"CX8dJkY-\",\"drivers_audio.md\":\"mqaz6p5N\",\"reference_configurator_support.md\":\"FaBQzIj6\",\"reference_keymap_extras.md\":\"-n_bLm78\",\"squeezing_avr.md\":\"BmcLYKOr\",\"porting_your_keyboard_to_qmk.md\":\"CGlGdFj4\",\"support_deprecation_policy.md\":\"CCo4ljiw\",\"pr_checklist.md\":\"BnrDXG2G\",\"quantum_keycodes.md\":\"DM5WeUFF\",\"unit_testing.md\":\"u3fgbGUj\",\"features_dynamic_macros.md\":\"CrJ1vhBA\",\"tap_hold.md\":\"DD8WTSla\",\"understanding_qmk.md\":\"f-Bc_eHQ\",\"features_encoders.md\":\"B2SX3hG2\",\"Line truncated
</body>
</html>