gitextract_f7a0y425/ ├── .clang-format ├── .clangd ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ ├── other_issues.yml │ │ └── zzz_blank.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── labeler.yml │ └── workflows/ │ ├── build.yml │ ├── format.yml │ ├── lint.yml │ ├── regen.yml │ └── unit_test.yml ├── .gitignore ├── .gitmodules ├── Doxyfile ├── LICENSE ├── Makefile ├── builddefs/ │ ├── build_full_test.mk │ ├── build_json.mk │ ├── build_keyboard.mk │ ├── build_layout.mk │ ├── build_test.mk │ ├── common_features.mk │ ├── common_rules.mk │ ├── converters.mk │ ├── disable_features.mk │ ├── docsgen/ │ │ ├── .gitignore │ │ ├── .vitepress/ │ │ │ ├── config.mts │ │ │ └── theme/ │ │ │ ├── QMKLayout.vue │ │ │ ├── custom.css │ │ │ └── index.ts │ │ ├── build-docs.sh │ │ ├── package.json │ │ └── start-docs.sh │ ├── generic_features.mk │ ├── message.mk │ ├── show_options.mk │ ├── support.mk │ └── testlist.mk ├── data/ │ ├── constants/ │ │ ├── keycodes/ │ │ │ ├── extras/ │ │ │ │ ├── keycodes_belgian_0.0.1.hjson │ │ │ │ ├── keycodes_bepo_0.0.1.hjson │ │ │ │ ├── keycodes_brazilian_abnt2_0.0.1.hjson │ │ │ │ ├── keycodes_canadian_french_0.0.1.hjson │ │ │ │ ├── keycodes_canadian_multilingual_0.0.1.hjson │ │ │ │ ├── keycodes_colemak_0.0.1.hjson │ │ │ │ ├── keycodes_croatian_0.0.1.hjson │ │ │ │ ├── keycodes_czech_0.0.1.hjson │ │ │ │ ├── keycodes_czech_mac_ansi_0.0.1.hjson │ │ │ │ ├── keycodes_czech_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_danish_0.0.1.hjson │ │ │ │ ├── keycodes_dvorak_0.0.1.hjson │ │ │ │ ├── keycodes_dvorak_fr_0.0.1.hjson │ │ │ │ ├── keycodes_dvorak_programmer_0.0.1.hjson │ │ │ │ ├── keycodes_estonian_0.0.1.hjson │ │ │ │ ├── keycodes_eurkey_0.0.1.hjson │ │ │ │ ├── keycodes_farsi_0.0.1.hjson │ │ │ │ ├── keycodes_finnish_0.0.1.hjson │ │ │ │ ├── keycodes_french_0.0.1.hjson │ │ │ │ ├── keycodes_french_afnor_0.0.1.hjson │ │ │ │ ├── keycodes_french_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_german_0.0.1.hjson │ │ │ │ ├── keycodes_german_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_greek_0.0.1.hjson │ │ │ │ ├── keycodes_hebrew_0.0.1.hjson │ │ │ │ ├── keycodes_hungarian_0.0.1.hjson │ │ │ │ ├── keycodes_icelandic_0.0.1.hjson │ │ │ │ ├── keycodes_irish_0.0.1.hjson │ │ │ │ ├── keycodes_italian_0.0.1.hjson │ │ │ │ ├── keycodes_italian_mac_ansi_0.0.1.hjson │ │ │ │ ├── keycodes_italian_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_japanese_0.0.1.hjson │ │ │ │ ├── keycodes_korean_0.0.1.hjson │ │ │ │ ├── keycodes_latvian_0.0.1.hjson │ │ │ │ ├── keycodes_lithuanian_azerty_0.0.1.hjson │ │ │ │ ├── keycodes_lithuanian_qwerty_0.0.1.hjson │ │ │ │ ├── keycodes_neo2_0.0.1.hjson │ │ │ │ ├── keycodes_nordic_0.0.1.hjson │ │ │ │ ├── keycodes_norman_0.0.1.hjson │ │ │ │ ├── keycodes_norwegian_0.0.1.hjson │ │ │ │ ├── keycodes_plover_0.0.1.hjson │ │ │ │ ├── keycodes_plover_dvorak_0.0.1.hjson │ │ │ │ ├── keycodes_polish_0.0.1.hjson │ │ │ │ ├── keycodes_portuguese_0.0.1.hjson │ │ │ │ ├── keycodes_portuguese_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_romanian_0.0.1.hjson │ │ │ │ ├── keycodes_russian_0.0.1.hjson │ │ │ │ ├── keycodes_russian_typewriter_0.0.1.hjson │ │ │ │ ├── keycodes_serbian_0.0.1.hjson │ │ │ │ ├── keycodes_serbian_latin_0.0.1.hjson │ │ │ │ ├── keycodes_slovak_0.0.1.hjson │ │ │ │ ├── keycodes_slovenian_0.0.1.hjson │ │ │ │ ├── keycodes_spanish_0.0.1.hjson │ │ │ │ ├── keycodes_spanish_dvorak_0.0.1.hjson │ │ │ │ ├── keycodes_spanish_latin_america_0.0.1.hjson │ │ │ │ ├── keycodes_swedish_0.0.1.hjson │ │ │ │ ├── keycodes_swedish_mac_ansi_0.0.1.hjson │ │ │ │ ├── keycodes_swedish_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_swedish_pro_mac_ansi_0.0.1.hjson │ │ │ │ ├── keycodes_swedish_pro_mac_iso_0.0.1.hjson │ │ │ │ ├── keycodes_swiss_de_0.0.1.hjson │ │ │ │ ├── keycodes_swiss_fr_0.0.1.hjson │ │ │ │ ├── keycodes_turkish_f_0.0.1.hjson │ │ │ │ ├── keycodes_turkish_q_0.0.1.hjson │ │ │ │ ├── keycodes_uk_0.0.1.hjson │ │ │ │ ├── keycodes_ukrainian_0.0.1.hjson │ │ │ │ ├── keycodes_us_0.0.1.hjson │ │ │ │ ├── keycodes_us_extended_0.0.1.hjson │ │ │ │ ├── keycodes_us_international_0.0.1.hjson │ │ │ │ ├── keycodes_us_international_linux_0.0.1.hjson │ │ │ │ ├── keycodes_workman_0.0.1.hjson │ │ │ │ └── keycodes_workman_zxcvm_0.0.1.hjson │ │ │ ├── keycodes_0.0.1.hjson │ │ │ ├── keycodes_0.0.1_audio.hjson │ │ │ ├── keycodes_0.0.1_basic.hjson │ │ │ ├── keycodes_0.0.1_joystick.hjson │ │ │ ├── keycodes_0.0.1_lighting.hjson │ │ │ ├── keycodes_0.0.1_macro.hjson │ │ │ ├── keycodes_0.0.1_magic.hjson │ │ │ ├── keycodes_0.0.1_midi.hjson │ │ │ ├── keycodes_0.0.1_programmable_button.hjson │ │ │ ├── keycodes_0.0.1_quantum.hjson │ │ │ ├── keycodes_0.0.1_sequencer.hjson │ │ │ ├── keycodes_0.0.1_steno.hjson │ │ │ ├── keycodes_0.0.1_swap_hands.hjson │ │ │ ├── keycodes_0.0.2.hjson │ │ │ ├── keycodes_0.0.2_basic.hjson │ │ │ ├── keycodes_0.0.2_kb.hjson │ │ │ ├── keycodes_0.0.2_magic.hjson │ │ │ ├── keycodes_0.0.2_midi.hjson │ │ │ ├── keycodes_0.0.2_quantum.hjson │ │ │ ├── keycodes_0.0.2_sequencer.hjson │ │ │ ├── keycodes_0.0.2_swap_hands.hjson │ │ │ ├── keycodes_0.0.2_user.hjson │ │ │ ├── keycodes_0.0.3.hjson │ │ │ ├── keycodes_0.0.3_quantum.hjson │ │ │ ├── keycodes_0.0.4.hjson │ │ │ ├── keycodes_0.0.4_lighting.hjson │ │ │ ├── keycodes_0.0.4_quantum.hjson │ │ │ ├── keycodes_0.0.5.hjson │ │ │ ├── keycodes_0.0.5_basic.hjson │ │ │ ├── keycodes_0.0.6.hjson │ │ │ ├── keycodes_0.0.6_connection.hjson │ │ │ ├── keycodes_0.0.6_quantum.hjson │ │ │ └── keycodes_0.0.7.hjson │ │ └── module_hooks/ │ │ ├── 0.1.0.hjson │ │ ├── 1.0.0.hjson │ │ ├── 1.1.0.hjson │ │ └── 1.1.1.hjson │ ├── mappings/ │ │ ├── defaults.hjson │ │ ├── info_config.hjson │ │ ├── info_defaults.hjson │ │ ├── info_rules.hjson │ │ └── keyboard_aliases.hjson │ ├── schemas/ │ │ ├── api_keyboard.jsonschema │ │ ├── community_module.jsonschema │ │ ├── definitions.jsonschema │ │ ├── keyboard.jsonschema │ │ ├── keycodes.jsonschema │ │ ├── keymap.jsonschema │ │ ├── user_repo_v0.jsonschema │ │ ├── user_repo_v1.jsonschema │ │ └── user_repo_v1_1.jsonschema │ └── templates/ │ ├── api/ │ │ └── readme.md │ ├── config-overrides/ │ │ ├── chibios/ │ │ │ ├── board.h │ │ │ ├── chconf.h │ │ │ ├── halconf.h │ │ │ └── mcuconf.h │ │ └── common/ │ │ └── lv_conf.h │ └── keyboard/ │ ├── keyboard.json │ └── readme.md ├── doxygen-todo ├── drivers/ │ ├── backlight/ │ │ └── backlight_software.c │ ├── battery/ │ │ ├── battery.c │ │ ├── battery.h │ │ ├── battery_adc.c │ │ └── battery_driver.h │ ├── bluetooth/ │ │ ├── bluefruit_le.cpp │ │ ├── bluefruit_le.h │ │ ├── bluetooth.c │ │ ├── bluetooth.h │ │ ├── bluetooth_drivers.c │ │ ├── outputselect.h │ │ ├── ringbuffer.hpp │ │ ├── rn42.c │ │ └── rn42.h │ ├── eeprom/ │ │ ├── eeprom_custom.c-template │ │ ├── eeprom_driver.c │ │ ├── eeprom_driver.h │ │ ├── eeprom_i2c.c │ │ ├── eeprom_i2c.h │ │ ├── eeprom_spi.c │ │ ├── eeprom_spi.h │ │ ├── eeprom_transient.c │ │ ├── eeprom_transient.h │ │ └── eeprom_wear_leveling.c │ ├── encoder/ │ │ └── encoder_quadrature.c │ ├── flash/ │ │ ├── flash.h │ │ ├── flash_spi.c │ │ └── flash_spi.h │ ├── gpio/ │ │ ├── mcp23018.c │ │ ├── mcp23018.h │ │ ├── pca9505.c │ │ ├── pca9505.h │ │ ├── pca9555.c │ │ ├── pca9555.h │ │ ├── sn74x138.c │ │ ├── sn74x138.h │ │ ├── sn74x154.c │ │ └── sn74x154.h │ ├── haptic/ │ │ ├── drv2605l.c │ │ ├── drv2605l.h │ │ ├── solenoid.c │ │ └── solenoid.h │ ├── i2c_master.h │ ├── lcd/ │ │ ├── hd44780.c │ │ ├── hd44780.h │ │ ├── st7565.c │ │ └── st7565.h │ ├── led/ │ │ ├── apa102.c │ │ ├── apa102.h │ │ ├── aw20216s.c │ │ ├── aw20216s.h │ │ ├── issi/ │ │ │ ├── is31fl3218-mono.c │ │ │ ├── is31fl3218-mono.h │ │ │ ├── is31fl3218.c │ │ │ ├── is31fl3218.h │ │ │ ├── is31fl3236-mono.c │ │ │ ├── is31fl3236-mono.h │ │ │ ├── is31fl3236.c │ │ │ ├── is31fl3236.h │ │ │ ├── is31fl3729-mono.c │ │ │ ├── is31fl3729-mono.h │ │ │ ├── is31fl3729.c │ │ │ ├── is31fl3729.h │ │ │ ├── is31fl3731-mono.c │ │ │ ├── is31fl3731-mono.h │ │ │ ├── is31fl3731.c │ │ │ ├── is31fl3731.h │ │ │ ├── is31fl3733-mono.c │ │ │ ├── is31fl3733-mono.h │ │ │ ├── is31fl3733.c │ │ │ ├── is31fl3733.h │ │ │ ├── is31fl3736-mono.c │ │ │ ├── is31fl3736-mono.h │ │ │ ├── is31fl3736.c │ │ │ ├── is31fl3736.h │ │ │ ├── is31fl3737-mono.c │ │ │ ├── is31fl3737-mono.h │ │ │ ├── is31fl3737.c │ │ │ ├── is31fl3737.h │ │ │ ├── is31fl3741-mono.c │ │ │ ├── is31fl3741-mono.h │ │ │ ├── is31fl3741.c │ │ │ ├── is31fl3741.h │ │ │ ├── is31fl3742a-mono.c │ │ │ ├── is31fl3742a-mono.h │ │ │ ├── is31fl3742a.c │ │ │ ├── is31fl3742a.h │ │ │ ├── is31fl3743a-mono.c │ │ │ ├── is31fl3743a-mono.h │ │ │ ├── is31fl3743a.c │ │ │ ├── is31fl3743a.h │ │ │ ├── is31fl3745-mono.c │ │ │ ├── is31fl3745-mono.h │ │ │ ├── is31fl3745.c │ │ │ ├── is31fl3745.h │ │ │ ├── is31fl3746a-mono.c │ │ │ ├── is31fl3746a-mono.h │ │ │ ├── is31fl3746a.c │ │ │ └── is31fl3746a.h │ │ ├── snled27351-mono.c │ │ ├── snled27351-mono.h │ │ ├── snled27351.c │ │ ├── snled27351.h │ │ ├── ws2812.c │ │ └── ws2812.h │ ├── oled/ │ │ ├── glcdfont.c │ │ ├── licenses.txt │ │ ├── oled_driver.c │ │ └── oled_driver.h │ ├── painter/ │ │ ├── comms/ │ │ │ ├── qp_comms_dummy.c │ │ │ ├── qp_comms_dummy.h │ │ │ ├── qp_comms_i2c.c │ │ │ ├── qp_comms_i2c.h │ │ │ ├── qp_comms_spi.c │ │ │ └── qp_comms_spi.h │ │ ├── gc9xxx/ │ │ │ ├── qp_gc9107.c │ │ │ ├── qp_gc9107.h │ │ │ ├── qp_gc9107_opcodes.h │ │ │ ├── qp_gc9a01.c │ │ │ ├── qp_gc9a01.h │ │ │ ├── qp_gc9a01_opcodes.h │ │ │ └── qp_gc9xxx_opcodes.h │ │ ├── generic/ │ │ │ ├── qp_surface.h │ │ │ ├── qp_surface_common.c │ │ │ ├── qp_surface_internal.h │ │ │ ├── qp_surface_mono1bpp.c │ │ │ └── qp_surface_rgb565.c │ │ ├── ili9xxx/ │ │ │ ├── qp_ili9163.c │ │ │ ├── qp_ili9163.h │ │ │ ├── qp_ili9341.c │ │ │ ├── qp_ili9341.h │ │ │ ├── qp_ili9486.c │ │ │ ├── qp_ili9486.h │ │ │ ├── qp_ili9488.c │ │ │ ├── qp_ili9488.h │ │ │ └── qp_ili9xxx_opcodes.h │ │ ├── ld7032/ │ │ │ ├── qp_ld7032.c │ │ │ ├── qp_ld7032.h │ │ │ └── qp_ld7032_opcodes.h │ │ ├── oled_panel/ │ │ │ ├── qp_oled_panel.c │ │ │ └── qp_oled_panel.h │ │ ├── sh1106/ │ │ │ ├── qp_sh1106.c │ │ │ ├── qp_sh1106.h │ │ │ └── qp_sh1106_opcodes.h │ │ ├── sh1107/ │ │ │ ├── qp_sh1107.c │ │ │ ├── qp_sh1107.h │ │ │ └── qp_sh1107_opcodes.h │ │ ├── ssd1351/ │ │ │ ├── qp_ssd1351.c │ │ │ ├── qp_ssd1351.h │ │ │ └── qp_ssd1351_opcodes.h │ │ ├── st77xx/ │ │ │ ├── qp_st7735.c │ │ │ ├── qp_st7735.h │ │ │ ├── qp_st7735_opcodes.h │ │ │ ├── qp_st7789.c │ │ │ ├── qp_st7789.h │ │ │ ├── qp_st7789_opcodes.h │ │ │ └── qp_st77xx_opcodes.h │ │ └── tft_panel/ │ │ ├── qp_tft_panel.c │ │ └── qp_tft_panel.h │ ├── ps2/ │ │ ├── ps2.h │ │ ├── ps2_busywait.c │ │ ├── ps2_interrupt.c │ │ ├── ps2_io.h │ │ ├── ps2_mouse.c │ │ └── ps2_mouse.h │ ├── sensors/ │ │ ├── adns5050.c │ │ ├── adns5050.h │ │ ├── adns9800.c │ │ ├── adns9800.h │ │ ├── analog_joystick.c │ │ ├── analog_joystick.h │ │ ├── azoteq_iqs5xx.c │ │ ├── azoteq_iqs5xx.h │ │ ├── cirque_pinnacle.c │ │ ├── cirque_pinnacle.h │ │ ├── cirque_pinnacle_gestures.c │ │ ├── cirque_pinnacle_gestures.h │ │ ├── cirque_pinnacle_i2c.c │ │ ├── cirque_pinnacle_regdefs.h │ │ ├── cirque_pinnacle_spi.c │ │ ├── navigator.c │ │ ├── navigator.h │ │ ├── navigator_trackpad.c │ │ ├── navigator_trackpad.h │ │ ├── paw3204.c │ │ ├── paw3204.h │ │ ├── pimoroni_trackball.c │ │ ├── pimoroni_trackball.h │ │ ├── pmw3320.c │ │ ├── pmw3320.h │ │ ├── pmw3360.c │ │ ├── pmw3360.h │ │ ├── pmw3389.c │ │ ├── pmw3389.h │ │ ├── pmw33xx_common.c │ │ └── pmw33xx_common.h │ ├── serial.h │ ├── spi_master.h │ ├── uart.h │ ├── usb2422.c │ ├── usb2422.h │ ├── usbpd.h │ └── wear_leveling/ │ ├── wear_leveling_flash_spi.c │ └── wear_leveling_flash_spi_config.h ├── layouts/ │ └── default/ │ ├── 60_abnt2/ │ │ ├── default_60_abnt2/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi/ │ │ ├── default_60_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_arrow/ │ │ ├── default_60_ansi_arrow/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_arrow_split_bs/ │ │ ├── default_60_ansi_arrow_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_split_bs_rshift/ │ │ ├── default_60_ansi_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_tsangan/ │ │ ├── default_60_ansi_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_tsangan_split_bs_rshift/ │ │ ├── default_60_ansi_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_wkl/ │ │ ├── default_60_ansi_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_ansi_wkl_split_bs_rshift/ │ │ ├── default_60_ansi_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_hhkb/ │ │ ├── default_60_hhkb/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso/ │ │ ├── default_60_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_arrow/ │ │ ├── default_60_iso_arrow/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_arrow_split_bs/ │ │ ├── default_60_iso_arrow_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_split_bs_rshift/ │ │ ├── default_60_iso_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_tsangan/ │ │ ├── default_60_iso_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_tsangan_split_bs_rshift/ │ │ ├── default_60_iso_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_wkl/ │ │ ├── default_60_iso_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_iso_wkl_split_bs_rshift/ │ │ ├── default_60_iso_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 60_jis/ │ │ ├── default_60_jis/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 64_ansi/ │ │ ├── default_64_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 64_iso/ │ │ ├── default_64_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi/ │ │ ├── default_65_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi_blocker/ │ │ ├── default_65_ansi_blocker/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi_blocker_split_bs/ │ │ ├── default_65_ansi_blocker_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi_blocker_tsangan/ │ │ ├── default_65_ansi_blocker_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi_blocker_tsangan_split_bs/ │ │ ├── default_65_ansi_blocker_tsangan_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_ansi_split_bs/ │ │ ├── default_65_ansi_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso/ │ │ ├── default_65_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso_blocker/ │ │ ├── default_65_iso_blocker/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso_blocker_split_bs/ │ │ ├── default_65_iso_blocker_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso_blocker_tsangan/ │ │ ├── default_65_iso_blocker_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso_blocker_tsangan_split_bs/ │ │ ├── default_65_iso_blocker_tsangan_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 65_iso_split_bs/ │ │ ├── default_65_iso_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 66_ansi/ │ │ ├── default_66_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 66_iso/ │ │ ├── default_66_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 68_ansi/ │ │ ├── default_68_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 68_iso/ │ │ ├── default_68_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 75_ansi/ │ │ ├── default_75_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 75_iso/ │ │ ├── default_75_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 96_ansi/ │ │ ├── default_96_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── 96_iso/ │ │ ├── default_96_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── alice/ │ │ ├── default_alice/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── alice_split_bs/ │ │ ├── default_alice_split_bs/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ergodox/ │ │ ├── default_ergodox/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_ansi/ │ │ ├── default_fullsize_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_extended_ansi/ │ │ ├── default_fullsize_extended_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_extended_iso/ │ │ ├── default_fullsize_extended_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_extended_jis/ │ │ ├── default_fullsize_extended_jis/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_iso/ │ │ ├── default_fullsize_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── fullsize_jis/ │ │ ├── default_fullsize_jis/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── numpad_4x4/ │ │ ├── default_numpad_4x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── numpad_5x4/ │ │ ├── default_numpad_5x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── numpad_5x6/ │ │ ├── default_numpad_5x6/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── numpad_6x4/ │ │ ├── default_numpad_6x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── numpad_6x5/ │ │ ├── default_numpad_6x5/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_1x1/ │ │ ├── default_ortho_1x1/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_2x3/ │ │ ├── default_ortho_2x3/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_2x6/ │ │ ├── default_ortho_2x6/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_3x10/ │ │ ├── default_ortho_3x10/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_3x3/ │ │ ├── default_ortho_3x3/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_4x10/ │ │ ├── default_ortho_4x10/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_4x12/ │ │ ├── default_ortho_4x12/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_4x16/ │ │ ├── default_ortho_4x16/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_4x4/ │ │ ├── default_ortho_4x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_4x6/ │ │ ├── default_ortho_4x6/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x10/ │ │ ├── default_ortho_5x10/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x12/ │ │ ├── default_ortho_5x12/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x13/ │ │ ├── default_ortho_5x13/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x14/ │ │ ├── default_ortho_5x14/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x15/ │ │ ├── default_ortho_5x15/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x4/ │ │ ├── default_ortho_5x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_5x5/ │ │ ├── default_ortho_5x5/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_6x13/ │ │ ├── default_ortho_6x13/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── ortho_6x4/ │ │ ├── default_ortho_6x4/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── planck_mit/ │ │ ├── default_planck_mit/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── readme.md │ ├── split_3x5_2/ │ │ ├── default_split_3x5_2/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── split_3x5_3/ │ │ ├── default_split_3x5_3/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── split_3x6_3/ │ │ ├── default_split_3x6_3/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi/ │ │ ├── default_tkl_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi_split_bs_rshift/ │ │ ├── default_tkl_ansi_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi_tsangan/ │ │ ├── default_tkl_ansi_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi_tsangan_split_bs_rshift/ │ │ ├── default_tkl_ansi_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi_wkl/ │ │ ├── default_tkl_ansi_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_ansi_wkl_split_bs_rshift/ │ │ ├── default_tkl_ansi_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi/ │ │ ├── default_tkl_f13_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi_split_bs_rshift/ │ │ ├── default_tkl_f13_ansi_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi_tsangan/ │ │ ├── default_tkl_f13_ansi_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi_tsangan_split_bs_rshift/ │ │ ├── default_tkl_f13_ansi_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi_wkl/ │ │ ├── default_tkl_f13_ansi_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_ansi_wkl_split_bs_rshift/ │ │ ├── default_tkl_f13_ansi_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso/ │ │ ├── default_tkl_f13_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso_split_bs_rshift/ │ │ ├── default_tkl_f13_iso_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso_tsangan/ │ │ ├── default_tkl_f13_iso_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso_tsangan_split_bs_rshift/ │ │ ├── default_tkl_f13_iso_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso_wkl/ │ │ ├── default_tkl_f13_iso_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_iso_wkl_split_bs_rshift/ │ │ ├── default_tkl_f13_iso_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_f13_jis/ │ │ ├── default_tkl_f13_jis/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso/ │ │ ├── default_tkl_iso/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso_split_bs_rshift/ │ │ ├── default_tkl_iso_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso_tsangan/ │ │ ├── default_tkl_iso_tsangan/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso_tsangan_split_bs_rshift/ │ │ ├── default_tkl_iso_tsangan_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso_wkl/ │ │ ├── default_tkl_iso_wkl/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_iso_wkl_split_bs_rshift/ │ │ ├── default_tkl_iso_wkl_split_bs_rshift/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_jis/ │ │ ├── default_tkl_jis/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ ├── tkl_nofrow_ansi/ │ │ ├── default_tkl_nofrow_ansi/ │ │ │ └── keymap.c │ │ ├── info.json │ │ ├── layout.json │ │ └── readme.md │ └── tkl_nofrow_iso/ │ ├── default_tkl_nofrow_iso/ │ │ └── keymap.c │ ├── info.json │ ├── layout.json │ └── readme.md ├── lib/ │ ├── fnv/ │ │ ├── Makefile │ │ ├── README │ │ ├── fnv.h │ │ ├── fnv32.c │ │ ├── fnv64.c │ │ ├── hash_32.c │ │ ├── hash_32a.c │ │ ├── hash_64.c │ │ ├── hash_64a.c │ │ ├── have_ulong64.c │ │ ├── longlong.h │ │ ├── qmk_fnv_type_validation.c │ │ └── test_fnv.c │ ├── lib8tion/ │ │ ├── LICENSE │ │ ├── lib8tion.c │ │ ├── lib8tion.h │ │ ├── math8.h │ │ ├── random8.h │ │ ├── scale8.h │ │ └── trig8.h │ ├── python/ │ │ ├── kle2xy.py │ │ └── qmk/ │ │ ├── __init__.py │ │ ├── build_targets.py │ │ ├── c_parse.py │ │ ├── cli/ │ │ │ ├── __init__.py │ │ │ ├── bux.py │ │ │ ├── c2json.py │ │ │ ├── cd.py │ │ │ ├── chibios/ │ │ │ │ ├── __init__.py │ │ │ │ └── confmigrate.py │ │ │ ├── ci/ │ │ │ │ ├── __init__.py │ │ │ │ └── validate_aliases.py │ │ │ ├── clean.py │ │ │ ├── compile.py │ │ │ ├── docs.py │ │ │ ├── doctor/ │ │ │ │ ├── __init__.py │ │ │ │ ├── check.py │ │ │ │ ├── linux.py │ │ │ │ ├── macos.py │ │ │ │ ├── main.py │ │ │ │ └── windows.py │ │ │ ├── find.py │ │ │ ├── flash.py │ │ │ ├── format/ │ │ │ │ ├── __init__.py │ │ │ │ ├── c.py │ │ │ │ ├── json.py │ │ │ │ ├── python.py │ │ │ │ └── text.py │ │ │ ├── generate/ │ │ │ │ ├── __init__.py │ │ │ │ ├── api.py │ │ │ │ ├── autocorrect_data.py │ │ │ │ ├── community_modules.py │ │ │ │ ├── compilation_database.py │ │ │ │ ├── config_h.py │ │ │ │ ├── develop_pr_list.py │ │ │ │ ├── dfu_header.py │ │ │ │ ├── docs.py │ │ │ │ ├── info_json.py │ │ │ │ ├── keyboard_c.py │ │ │ │ ├── keyboard_h.py │ │ │ │ ├── keycodes.py │ │ │ │ ├── keymap_h.py │ │ │ │ ├── make_dependencies.py │ │ │ │ ├── rgb_breathe_table.py │ │ │ │ ├── rules_mk.py │ │ │ │ └── version_h.py │ │ │ ├── git/ │ │ │ │ ├── __init__.py │ │ │ │ └── submodule.py │ │ │ ├── hello.py │ │ │ ├── import/ │ │ │ │ ├── __init__.py │ │ │ │ ├── kbfirmware.py │ │ │ │ ├── keyboard.py │ │ │ │ └── keymap.py │ │ │ ├── info.py │ │ │ ├── json2c.py │ │ │ ├── kle2json.py │ │ │ ├── license_check.py │ │ │ ├── lint.py │ │ │ ├── list/ │ │ │ │ ├── __init__.py │ │ │ │ ├── keyboards.py │ │ │ │ ├── keymaps.py │ │ │ │ └── layouts.py │ │ │ ├── mass_compile.py │ │ │ ├── migrate.py │ │ │ ├── new/ │ │ │ │ ├── __init__.py │ │ │ │ ├── keyboard.py │ │ │ │ └── keymap.py │ │ │ ├── painter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── convert_graphics.py │ │ │ │ └── make_font.py │ │ │ ├── pytest.py │ │ │ ├── resolve_alias.py │ │ │ ├── test/ │ │ │ │ ├── __init__.py │ │ │ │ └── c.py │ │ │ ├── userspace/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── compile.py │ │ │ │ ├── doctor.py │ │ │ │ ├── list.py │ │ │ │ ├── path.py │ │ │ │ └── remove.py │ │ │ └── via2json.py │ │ ├── commands.py │ │ ├── comment_remover.py │ │ ├── community_modules.py │ │ ├── compilation_database.py │ │ ├── constants.py │ │ ├── converter.py │ │ ├── datetime.py │ │ ├── decorators.py │ │ ├── docs.py │ │ ├── errors.py │ │ ├── flashers.py │ │ ├── git.py │ │ ├── importers.py │ │ ├── info.py │ │ ├── json_encoders.py │ │ ├── json_schema.py │ │ ├── keyboard.py │ │ ├── keycodes.py │ │ ├── keymap.py │ │ ├── makefile.py │ │ ├── math.py │ │ ├── math_ops.py │ │ ├── painter.py │ │ ├── painter_qff.py │ │ ├── painter_qgf.py │ │ ├── path.py │ │ ├── search.py │ │ ├── submodules.py │ │ ├── tests/ │ │ │ ├── .gitignore │ │ │ ├── __init__.py │ │ │ ├── attrdict.py │ │ │ ├── kle.txt │ │ │ ├── minimal_info.json │ │ │ ├── minimal_keymap.json │ │ │ ├── test_cli_commands.py │ │ │ ├── test_qmk_errors.py │ │ │ ├── test_qmk_keymap.py │ │ │ └── test_qmk_path.py │ │ ├── userspace.py │ │ └── util.py │ └── usbhost/ │ ├── USB_Host_Shield_2.0/ │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── BTD.cpp │ │ ├── BTD.h │ │ ├── BTHID.cpp │ │ ├── BTHID.h │ │ ├── PS3BT.cpp │ │ ├── PS3BT.h │ │ ├── PS3Enums.h │ │ ├── PS3USB.cpp │ │ ├── PS3USB.h │ │ ├── PS4BT.h │ │ ├── PS4Parser.cpp │ │ ├── PS4Parser.h │ │ ├── PS4USB.h │ │ ├── PSBuzz.cpp │ │ ├── PSBuzz.h │ │ ├── README.md │ │ ├── SPP.cpp │ │ ├── SPP.h │ │ ├── Usb.cpp │ │ ├── Usb.h │ │ ├── UsbCore.h │ │ ├── Wii.cpp │ │ ├── Wii.h │ │ ├── WiiCameraReadme.md │ │ ├── XBOXOLD.cpp │ │ ├── XBOXOLD.h │ │ ├── XBOXONE.cpp │ │ ├── XBOXONE.h │ │ ├── XBOXRECV.cpp │ │ ├── XBOXRECV.h │ │ ├── XBOXUSB.cpp │ │ ├── XBOXUSB.h │ │ ├── address.h │ │ ├── adk.cpp │ │ ├── adk.h │ │ ├── avrpins.h │ │ ├── cdc_XR21B1411.cpp │ │ ├── cdc_XR21B1411.h │ │ ├── cdcacm.cpp │ │ ├── cdcacm.h │ │ ├── cdcftdi.cpp │ │ ├── cdcftdi.h │ │ ├── cdcprolific.cpp │ │ ├── cdcprolific.h │ │ ├── confdescparser.h │ │ ├── controllerEnums.h │ │ ├── examples/ │ │ │ ├── Bluetooth/ │ │ │ │ ├── BTHID/ │ │ │ │ │ ├── BTHID.ino │ │ │ │ │ ├── KeyboardParser.h │ │ │ │ │ └── MouseParser.h │ │ │ │ ├── PS3BT/ │ │ │ │ │ └── PS3BT.ino │ │ │ │ ├── PS3Multi/ │ │ │ │ │ └── PS3Multi.ino │ │ │ │ ├── PS3SPP/ │ │ │ │ │ └── PS3SPP.ino │ │ │ │ ├── PS4BT/ │ │ │ │ │ └── PS4BT.ino │ │ │ │ ├── SPP/ │ │ │ │ │ └── SPP.ino │ │ │ │ ├── SPPMulti/ │ │ │ │ │ └── SPPMulti.ino │ │ │ │ ├── Wii/ │ │ │ │ │ └── Wii.ino │ │ │ │ ├── WiiBalanceBoard/ │ │ │ │ │ └── WiiBalanceBoard.ino │ │ │ │ ├── WiiIRCamera/ │ │ │ │ │ └── WiiIRCamera.ino │ │ │ │ ├── WiiMulti/ │ │ │ │ │ └── WiiMulti.ino │ │ │ │ └── WiiUProController/ │ │ │ │ └── WiiUProController.ino │ │ │ ├── HID/ │ │ │ │ ├── USBHIDBootKbd/ │ │ │ │ │ └── USBHIDBootKbd.ino │ │ │ │ ├── USBHIDBootKbdAndMouse/ │ │ │ │ │ └── USBHIDBootKbdAndMouse.ino │ │ │ │ ├── USBHIDBootMouse/ │ │ │ │ │ └── USBHIDBootMouse.ino │ │ │ │ ├── USBHIDJoystick/ │ │ │ │ │ ├── USBHIDJoystick.ino │ │ │ │ │ ├── hidjoystickrptparser.cpp │ │ │ │ │ └── hidjoystickrptparser.h │ │ │ │ ├── USBHID_desc/ │ │ │ │ │ ├── USBHID_desc.ino │ │ │ │ │ └── pgmstrings.h │ │ │ │ ├── le3dp/ │ │ │ │ │ ├── le3dp.ino │ │ │ │ │ ├── le3dp_rptparser.cpp │ │ │ │ │ └── le3dp_rptparser.h │ │ │ │ └── scale/ │ │ │ │ ├── scale.ino │ │ │ │ ├── scale_rptparser.cpp │ │ │ │ └── scale_rptparser.h │ │ │ ├── PS3USB/ │ │ │ │ └── PS3USB.ino │ │ │ ├── PS4USB/ │ │ │ │ └── PS4USB.ino │ │ │ ├── PSBuzz/ │ │ │ │ └── PSBuzz.ino │ │ │ ├── USB_desc/ │ │ │ │ ├── USB_desc.ino │ │ │ │ └── pgmstrings.h │ │ │ ├── Xbox/ │ │ │ │ ├── XBOXOLD/ │ │ │ │ │ └── XBOXOLD.ino │ │ │ │ ├── XBOXONE/ │ │ │ │ │ └── XBOXONE.ino │ │ │ │ ├── XBOXRECV/ │ │ │ │ │ └── XBOXRECV.ino │ │ │ │ └── XBOXUSB/ │ │ │ │ └── XBOXUSB.ino │ │ │ ├── acm/ │ │ │ │ └── acm_terminal/ │ │ │ │ ├── acm_terminal.ino │ │ │ │ └── pgmstrings.h │ │ │ ├── adk/ │ │ │ │ ├── ArduinoBlinkLED/ │ │ │ │ │ └── ArduinoBlinkLED.ino │ │ │ │ ├── adk_barcode/ │ │ │ │ │ └── adk_barcode.ino │ │ │ │ ├── demokit_20/ │ │ │ │ │ └── demokit_20.ino │ │ │ │ ├── term_test/ │ │ │ │ │ └── term_test.ino │ │ │ │ └── term_time/ │ │ │ │ └── term_time.ino │ │ │ ├── board_qc/ │ │ │ │ └── board_qc.ino │ │ │ ├── cdc_XR21B1411/ │ │ │ │ └── XR_terminal/ │ │ │ │ └── XR_terminal.ino │ │ │ ├── ftdi/ │ │ │ │ └── USBFTDILoopback/ │ │ │ │ ├── USBFTDILoopback.ino │ │ │ │ └── pgmstrings.h │ │ │ ├── hub_demo/ │ │ │ │ ├── hub_demo.ino │ │ │ │ └── pgmstrings.h │ │ │ ├── max_LCD/ │ │ │ │ └── max_LCD.ino │ │ │ ├── pl2303/ │ │ │ │ ├── pl2303_gprs_terminal/ │ │ │ │ │ └── pl2303_gprs_terminal.ino │ │ │ │ ├── pl2303_gps/ │ │ │ │ │ └── pl2303_gps.ino │ │ │ │ ├── pl2303_tinygps/ │ │ │ │ │ └── pl2303_tinygps.ino │ │ │ │ └── pl2303_xbee_terminal/ │ │ │ │ └── pl2303_xbee_terminal.ino │ │ │ └── testusbhostFAT/ │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ └── testusbhostFAT.ino │ │ ├── gpl2.txt │ │ ├── hexdump.h │ │ ├── hid.cpp │ │ ├── hid.h │ │ ├── hidboot.cpp │ │ ├── hidboot.h │ │ ├── hidescriptorparser.cpp │ │ ├── hidescriptorparser.h │ │ ├── hiduniversal.cpp │ │ ├── hiduniversal.h │ │ ├── hidusagestr.h │ │ ├── hidusagetitlearrays.cpp │ │ ├── keywords.txt │ │ ├── library.json │ │ ├── library.properties │ │ ├── macros.h │ │ ├── masstorage.cpp │ │ ├── masstorage.h │ │ ├── max3421e.h │ │ ├── max_LCD.cpp │ │ ├── max_LCD.h │ │ ├── message.cpp │ │ ├── message.h │ │ ├── parsetools.cpp │ │ ├── parsetools.h │ │ ├── printhex.h │ │ ├── settings.h │ │ ├── sink_parser.h │ │ ├── usb_ch9.h │ │ ├── usbhost.h │ │ ├── usbhub.cpp │ │ ├── usbhub.h │ │ ├── version_helper.h │ │ └── xboxEnums.h │ └── arduino-1.0.1/ │ ├── cores/ │ │ └── arduino/ │ │ ├── Arduino.h │ │ ├── CDC.cpp │ │ ├── Client.h │ │ ├── HID.cpp │ │ ├── HardwareSerial.cpp │ │ ├── HardwareSerial.h │ │ ├── IPAddress.cpp │ │ ├── IPAddress.h │ │ ├── Platform.h │ │ ├── Print.cpp │ │ ├── Print.h │ │ ├── Printable.h │ │ ├── Server.h │ │ ├── Stream.cpp │ │ ├── Stream.h │ │ ├── Tone.cpp │ │ ├── USBAPI.h │ │ ├── USBCore.cpp │ │ ├── USBCore.h │ │ ├── USBDesc.h │ │ ├── Udp.h │ │ ├── WCharacter.h │ │ ├── WInterrupts.c │ │ ├── WMath.cpp │ │ ├── WString.cpp │ │ ├── WString.h │ │ ├── binary.h │ │ ├── main.cpp │ │ ├── new.cpp │ │ ├── new.h │ │ ├── wiring.c │ │ ├── wiring_analog.c │ │ ├── wiring_digital.c │ │ ├── wiring_private.h │ │ ├── wiring_pulse.c │ │ └── wiring_shift.c │ └── variants/ │ ├── eightanaloginputs/ │ │ └── pins_arduino.h │ ├── leonardo/ │ │ └── pins_arduino.h │ ├── mega/ │ │ └── pins_arduino.h │ └── standard/ │ └── pins_arduino.h ├── license_GPLv2.md ├── license_GPLv3.md ├── license_Modified_BSD.md ├── modules/ │ └── qmk/ │ ├── flow_led_matrix_effect/ │ │ ├── led_matrix_module.inc │ │ └── qmk_module.json │ ├── flow_rgb_matrix_effect/ │ │ ├── qmk_module.json │ │ └── rgb_matrix_module.inc │ ├── hello_world/ │ │ ├── hello_world.c │ │ ├── introspection.c │ │ ├── introspection.h │ │ ├── qmk_module.json │ │ └── rules.mk │ └── super_alt_tab/ │ ├── qmk_module.json │ └── super_alt_tab.c ├── nose2.cfg ├── paths.mk ├── platforms/ │ ├── atomic_util.h │ ├── avr/ │ │ ├── _pin_defs.h │ │ ├── _print.h │ │ ├── _timer.h │ │ ├── _util.h │ │ ├── _wait.h │ │ ├── atomic_util.h │ │ ├── bootloader.mk │ │ ├── bootloader_size.c │ │ ├── bootloaders/ │ │ │ ├── bootloadhid.c │ │ │ ├── caterina.c │ │ │ ├── custom.c │ │ │ ├── dfu.c │ │ │ ├── halfkay.c │ │ │ └── usbasploader.c │ │ ├── drivers/ │ │ │ ├── analog.c │ │ │ ├── analog.h │ │ │ ├── audio_pwm.h │ │ │ ├── audio_pwm_hardware.c │ │ │ ├── backlight_pwm.c │ │ │ ├── backlight_timer.c │ │ │ ├── glcdfont.c │ │ │ ├── i2c_master.c │ │ │ ├── i2c_slave.c │ │ │ ├── i2c_slave.h │ │ │ ├── ps2/ │ │ │ │ ├── ps2_io.c │ │ │ │ └── ps2_usart.c │ │ │ ├── serial.c │ │ │ ├── spi_master.c │ │ │ ├── uart.c │ │ │ ├── ws2812_bitbang.c │ │ │ └── ws2812_i2c.c │ │ ├── flash.mk │ │ ├── gpio.h │ │ ├── hardware_id.c │ │ ├── mcu_selection.mk │ │ ├── platform.c │ │ ├── platform.mk │ │ ├── platform_deps.h │ │ ├── printf.c │ │ ├── printf.mk │ │ ├── sleep_led.c │ │ ├── suspend.c │ │ ├── timer.c │ │ ├── timer_avr.h │ │ ├── xprintf.S │ │ └── xprintf.h │ ├── bootloader.h │ ├── chibios/ │ │ ├── _pin_defs.h │ │ ├── _timer.h │ │ ├── _util.h │ │ ├── _wait.c │ │ ├── _wait.h │ │ ├── atomic_util.h │ │ ├── boards/ │ │ │ ├── BLACKPILL_STM32_F401/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── BLACKPILL_STM32_F411/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── BONSAI_C4/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ ├── halconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_AT32_F415XX/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.c │ │ │ │ │ ├── board.h │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_PROMICRO_RP2040/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_RP_RP2040/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F042X6/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.c │ │ │ │ │ ├── board.h │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F072XB/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F303XC/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F401XC/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F405XG/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F407XE/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F411XE/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_F446XE/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_G0B1XB/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.mk │ │ │ │ │ └── extra.c │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_G431XB/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ ├── hal_lld.h │ │ │ │ ├── mcuconf.h │ │ │ │ └── stm32_registry.h │ │ │ ├── GENERIC_STM32_G474XE/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_H723XG/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.mk │ │ │ │ │ └── extra.c │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_L412XB/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_L432XC/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_STM32_L433XC/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_WB32_F3G71XX/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.c │ │ │ │ │ ├── board.h │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── GENERIC_WB32_FQ95XX/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.c │ │ │ │ │ ├── board.h │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ └── mcuconf.h │ │ │ ├── IC_TEENSY_3_1/ │ │ │ │ └── board/ │ │ │ │ ├── board.c │ │ │ │ ├── board.h │ │ │ │ └── board.mk │ │ │ ├── IC_TEENSY_4_1/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── rules.mk │ │ │ ├── PJRC_TEENSY_3_5/ │ │ │ │ └── board/ │ │ │ │ ├── board.mk │ │ │ │ └── extra.c │ │ │ ├── PJRC_TEENSY_3_6/ │ │ │ │ └── board/ │ │ │ │ ├── board.mk │ │ │ │ └── extra.c │ │ │ ├── QMK_BLOK/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ ├── halconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── QMK_PM2040/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ ├── halconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── QMK_PROTON_C/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ ├── halconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── SIPEED_LONGAN_NANO/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── chconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── STEMCELL/ │ │ │ │ ├── board/ │ │ │ │ │ └── board.mk │ │ │ │ └── configs/ │ │ │ │ ├── board.h │ │ │ │ ├── chconf.h │ │ │ │ ├── config.h │ │ │ │ ├── halconf.h │ │ │ │ └── mcuconf.h │ │ │ ├── STM32_F103_STM32DUINO/ │ │ │ │ ├── board/ │ │ │ │ │ ├── board.c │ │ │ │ │ ├── board.h │ │ │ │ │ └── board.mk │ │ │ │ ├── configs/ │ │ │ │ │ ├── chconf.h │ │ │ │ │ ├── config.h │ │ │ │ │ └── mcuconf.h │ │ │ │ └── ld/ │ │ │ │ ├── STM32F103x6_stm32duino.ld │ │ │ │ ├── STM32F103x8_stm32duino.ld │ │ │ │ ├── STM32F103xB_stm32duino.ld │ │ │ │ └── stm32duino_bootloader_common.ld │ │ │ └── common/ │ │ │ ├── configs/ │ │ │ │ ├── chconf.h │ │ │ │ └── halconf.h │ │ │ └── ld/ │ │ │ ├── MKL26Z64.ld │ │ │ ├── RP2040_FLASH_TIMECRIT.ld │ │ │ ├── RP2040_rules_data_with_timecrit.ld │ │ │ ├── STM32F103x8_uf2boot.ld │ │ │ ├── STM32F103xB_uf2boot.ld │ │ │ ├── STM32F303xC_tinyuf2.ld │ │ │ ├── STM32F401xC.ld │ │ │ ├── STM32F401xC_tinyuf2.ld │ │ │ ├── STM32F401xE.ld │ │ │ ├── STM32F401xE_tinyuf2.ld │ │ │ ├── STM32F405xG.ld │ │ │ ├── STM32F405xG_tinyuf2.ld │ │ │ ├── STM32F407xE.ld │ │ │ ├── STM32F407xE_tinyuf2.ld │ │ │ ├── STM32F411xC.ld │ │ │ ├── STM32F411xC_tinyuf2.ld │ │ │ ├── STM32F411xE.ld │ │ │ ├── STM32F411xE_tinyuf2.ld │ │ │ ├── STM32F446xE.ld │ │ │ ├── STM32F446xE_tinyuf2.ld │ │ │ ├── STM32G0B1xB.ld │ │ │ ├── STM32L412xB.ld │ │ │ ├── stm32f4xx_common.ld │ │ │ └── stm32f4xx_tinyuf2_common.ld │ │ ├── bootloader.mk │ │ ├── bootloaders/ │ │ │ ├── at32_dfu.c │ │ │ ├── custom.c │ │ │ ├── gd32v_dfu.c │ │ │ ├── halfkay.c │ │ │ ├── kiibohd.c │ │ │ ├── rp2040.c │ │ │ ├── stm32_dfu.c │ │ │ ├── stm32duino.c │ │ │ ├── tinyuf2.c │ │ │ ├── uf2boot.c │ │ │ └── wb32_dfu.c │ │ ├── chibios_config.h │ │ ├── config.h │ │ ├── converters/ │ │ │ ├── elite_c_to_elite_pi/ │ │ │ │ └── pre_converter.mk │ │ │ ├── elite_c_to_helios/ │ │ │ │ └── pre_converter.mk │ │ │ ├── elite_c_to_liatris/ │ │ │ │ └── pre_converter.mk │ │ │ ├── elite_c_to_rp2040_ce/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── elite_c_to_stemcell/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_bit_c_pro/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_blok/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_bonsai_c3/ │ │ │ │ └── pre_converter.mk │ │ │ ├── promicro_to_bonsai_c4/ │ │ │ │ ├── _pin_defs.h │ │ │ │ ├── converter.mk │ │ │ │ └── post_converter.mk │ │ │ ├── promicro_to_elite_pi/ │ │ │ │ └── pre_converter.mk │ │ │ ├── promicro_to_helios/ │ │ │ │ └── pre_converter.mk │ │ │ ├── promicro_to_imera/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_kb2040/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_liatris/ │ │ │ │ └── pre_converter.mk │ │ │ ├── promicro_to_michi/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_promicro_rp2040/ │ │ │ │ └── pre_converter.mk │ │ │ ├── promicro_to_proton_c/ │ │ │ │ ├── _pin_defs.h │ │ │ │ ├── converter.mk │ │ │ │ └── post_converter.mk │ │ │ ├── promicro_to_rp2040_ce/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_sparkfun_pm2040/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ ├── promicro_to_stemcell/ │ │ │ │ ├── _pin_defs.h │ │ │ │ └── converter.mk │ │ │ └── promicro_to_svlinky/ │ │ │ ├── _pin_defs.h │ │ │ └── converter.mk │ │ ├── drivers/ │ │ │ ├── analog.c │ │ │ ├── analog.h │ │ │ ├── audio_dac.h │ │ │ ├── audio_dac_additive.c │ │ │ ├── audio_dac_basic.c │ │ │ ├── audio_pwm.h │ │ │ ├── audio_pwm_hardware.c │ │ │ ├── audio_pwm_software.c │ │ │ ├── backlight_pwm.c │ │ │ ├── backlight_timer.c │ │ │ ├── eeprom/ │ │ │ │ ├── eeprom_kinetis_flexram.c │ │ │ │ ├── eeprom_kinetis_flexram.h │ │ │ │ ├── eeprom_legacy_emulated_flash.c │ │ │ │ ├── eeprom_legacy_emulated_flash.h │ │ │ │ ├── eeprom_legacy_emulated_flash_defs.h │ │ │ │ ├── eeprom_stm32_L0_L1.c │ │ │ │ └── eeprom_stm32_L0_L1.h │ │ │ ├── flash/ │ │ │ │ ├── legacy_flash_ops.c │ │ │ │ └── legacy_flash_ops.h │ │ │ ├── i2c_master.c │ │ │ ├── ps2/ │ │ │ │ └── ps2_io.c │ │ │ ├── serial.c │ │ │ ├── serial_protocol.c │ │ │ ├── serial_protocol.h │ │ │ ├── serial_usart.c │ │ │ ├── serial_usart.h │ │ │ ├── spi_master.c │ │ │ ├── uart_serial.c │ │ │ ├── uart_sio.c │ │ │ ├── usbpd_stm32g4.c │ │ │ ├── vendor/ │ │ │ │ └── RP/ │ │ │ │ └── RP2040/ │ │ │ │ ├── ps2_vendor.c │ │ │ │ ├── serial_vendor.c │ │ │ │ └── ws2812_vendor.c │ │ │ ├── wear_leveling/ │ │ │ │ ├── wear_leveling_efl.c │ │ │ │ ├── wear_leveling_efl_config.h │ │ │ │ ├── wear_leveling_legacy.c │ │ │ │ ├── wear_leveling_legacy_config.h │ │ │ │ ├── wear_leveling_rp2040_flash.c │ │ │ │ └── wear_leveling_rp2040_flash_config.h │ │ │ ├── ws2812_bitbang.c │ │ │ ├── ws2812_pwm.c │ │ │ └── ws2812_spi.c │ │ ├── errno.h │ │ ├── flash.mk │ │ ├── gd32v_compatibility.h │ │ ├── gpio.h │ │ ├── hardware_id.c │ │ ├── interrupt_handlers.c │ │ ├── mcu_selection.mk │ │ ├── platform.c │ │ ├── platform.mk │ │ ├── platform_deps.h │ │ ├── sleep_led.c │ │ ├── suspend.c │ │ ├── synchronization_util.c │ │ ├── syscall-fallbacks.c │ │ ├── timer.c │ │ ├── vendors/ │ │ │ └── RP/ │ │ │ ├── RP2040.mk │ │ │ ├── _pin_defs.h │ │ │ ├── pico_sdk_shims.c │ │ │ └── stage2_bootloaders.c │ │ └── wait.c │ ├── common.mk │ ├── eeprom.h │ ├── gpio.h │ ├── hardware_id.h │ ├── lv_conf.h │ ├── pin_defs.h │ ├── progmem.h │ ├── sleep_led.h │ ├── suspend.c │ ├── suspend.h │ ├── synchronization_util.c │ ├── synchronization_util.h │ ├── test/ │ │ ├── _wait.h │ │ ├── bootloaders/ │ │ │ └── none.c │ │ ├── drivers/ │ │ │ ├── audio_pwm.h │ │ │ └── audio_pwm_hardware.c │ │ ├── eeprom.c │ │ ├── eeprom_legacy_emulated_flash_tests.cpp │ │ ├── eeprom_legacy_emulated_flash_tests.h │ │ ├── hal.h │ │ ├── hardware_id.c │ │ ├── legacy_flash_ops_mock.c │ │ ├── platform.c │ │ ├── platform.h │ │ ├── platform.mk │ │ ├── platform_deps.h │ │ ├── rules.mk │ │ ├── suspend.c │ │ ├── testlist.mk │ │ └── timer.c │ ├── timer.c │ ├── timer.h │ └── wait.h ├── quantum/ │ ├── action.c │ ├── action.h │ ├── action_code.h │ ├── action_layer.c │ ├── action_layer.h │ ├── action_tapping.c │ ├── action_tapping.h │ ├── action_util.c │ ├── action_util.h │ ├── audio/ │ │ ├── audio.c │ │ ├── audio.h │ │ ├── luts.c │ │ ├── luts.h │ │ ├── muse.c │ │ ├── muse.h │ │ ├── musical_notes.h │ │ ├── song_list.h │ │ ├── voices.c │ │ └── voices.h │ ├── backlight/ │ │ ├── backlight.c │ │ ├── backlight.h │ │ ├── backlight_driver_common.c │ │ └── backlight_driver_common.h │ ├── basic_profiling.h │ ├── bits.h │ ├── bitwise.c │ ├── bitwise.h │ ├── bootmagic/ │ │ ├── bootmagic.c │ │ └── bootmagic.h │ ├── caps_word.c │ ├── caps_word.h │ ├── color.c │ ├── color.h │ ├── command.c │ ├── command.h │ ├── compiler_support.h │ ├── connection/ │ │ ├── connection.c │ │ └── connection.h │ ├── crc.c │ ├── crc.h │ ├── debounce/ │ │ ├── asym_eager_defer_pk.c │ │ ├── none.c │ │ ├── sym_defer_g.c │ │ ├── sym_defer_pk.c │ │ ├── sym_defer_pr.c │ │ ├── sym_eager_pk.c │ │ ├── sym_eager_pr.c │ │ └── tests/ │ │ ├── asym_eager_defer_pk_tests.cpp │ │ ├── debounce_test_common.cpp │ │ ├── debounce_test_common.h │ │ ├── none_tests.cpp │ │ ├── rules.mk │ │ ├── sym_defer_g_tests.cpp │ │ ├── sym_defer_pk_tests.cpp │ │ ├── sym_defer_pr_tests.cpp │ │ ├── sym_eager_pk_tests.cpp │ │ ├── sym_eager_pr_tests.cpp │ │ └── testlist.mk │ ├── debounce.h │ ├── deferred_exec.c │ ├── deferred_exec.h │ ├── digitizer.c │ ├── digitizer.h │ ├── dip_switch.c │ ├── dip_switch.h │ ├── dynamic_keymap.c │ ├── dynamic_keymap.h │ ├── eeconfig.c │ ├── eeconfig.h │ ├── encoder/ │ │ └── tests/ │ │ ├── config_encoder_common.h │ │ ├── config_mock.h │ │ ├── config_mock_split_left_eq_right.h │ │ ├── config_mock_split_left_gt_right.h │ │ ├── config_mock_split_left_lt_right.h │ │ ├── config_mock_split_no_left.h │ │ ├── config_mock_split_no_right.h │ │ ├── config_mock_split_role.h │ │ ├── encoder_tests.cpp │ │ ├── encoder_tests_split_left_eq_right.cpp │ │ ├── encoder_tests_split_left_gt_right.cpp │ │ ├── encoder_tests_split_left_lt_right.cpp │ │ ├── encoder_tests_split_no_left.cpp │ │ ├── encoder_tests_split_no_right.cpp │ │ ├── encoder_tests_split_role.cpp │ │ ├── mock.c │ │ ├── mock.h │ │ ├── mock_split.c │ │ ├── mock_split.h │ │ ├── rules.mk │ │ └── testlist.mk │ ├── encoder.c │ ├── encoder.h │ ├── haptic.c │ ├── haptic.h │ ├── joystick.c │ ├── joystick.h │ ├── keyboard.c │ ├── keyboard.h │ ├── keycode.h │ ├── keycode_config.c │ ├── keycode_config.h │ ├── keycode_string.c │ ├── keycode_string.h │ ├── keycodes.h │ ├── keymap_common.c │ ├── keymap_common.h │ ├── keymap_extras/ │ │ ├── keymap_belgian.h │ │ ├── keymap_bepo.h │ │ ├── keymap_brazilian_abnt2.h │ │ ├── keymap_canadian_french.h │ │ ├── keymap_canadian_multilingual.h │ │ ├── keymap_colemak.h │ │ ├── keymap_croatian.h │ │ ├── keymap_czech.h │ │ ├── keymap_czech_mac_ansi.h │ │ ├── keymap_czech_mac_iso.h │ │ ├── keymap_danish.h │ │ ├── keymap_dvorak.h │ │ ├── keymap_dvorak_fr.h │ │ ├── keymap_dvorak_programmer.h │ │ ├── keymap_estonian.h │ │ ├── keymap_eurkey.h │ │ ├── keymap_farsi.h │ │ ├── keymap_finnish.h │ │ ├── keymap_french.h │ │ ├── keymap_french_afnor.h │ │ ├── keymap_french_mac_iso.h │ │ ├── keymap_german.h │ │ ├── keymap_german_mac_iso.h │ │ ├── keymap_greek.h │ │ ├── keymap_hebrew.h │ │ ├── keymap_hungarian.h │ │ ├── keymap_icelandic.h │ │ ├── keymap_irish.h │ │ ├── keymap_italian.h │ │ ├── keymap_italian_mac_ansi.h │ │ ├── keymap_italian_mac_iso.h │ │ ├── keymap_japanese.h │ │ ├── keymap_korean.h │ │ ├── keymap_latvian.h │ │ ├── keymap_lithuanian_azerty.h │ │ ├── keymap_lithuanian_qwerty.h │ │ ├── keymap_neo2.h │ │ ├── keymap_nordic.h │ │ ├── keymap_norman.h │ │ ├── keymap_norwegian.h │ │ ├── keymap_plover.h │ │ ├── keymap_plover_dvorak.h │ │ ├── keymap_polish.h │ │ ├── keymap_portuguese.h │ │ ├── keymap_portuguese_mac_iso.h │ │ ├── keymap_romanian.h │ │ ├── keymap_russian.h │ │ ├── keymap_russian_typewriter.h │ │ ├── keymap_serbian.h │ │ ├── keymap_serbian_latin.h │ │ ├── keymap_slovak.h │ │ ├── keymap_slovenian.h │ │ ├── keymap_spanish.h │ │ ├── keymap_spanish_dvorak.h │ │ ├── keymap_spanish_latin_america.h │ │ ├── keymap_steno.h │ │ ├── keymap_swedish.h │ │ ├── keymap_swedish_mac_ansi.h │ │ ├── keymap_swedish_mac_iso.h │ │ ├── keymap_swedish_pro_mac_ansi.h │ │ ├── keymap_swedish_pro_mac_iso.h │ │ ├── keymap_swiss_de.h │ │ ├── keymap_swiss_fr.h │ │ ├── keymap_turkish_f.h │ │ ├── keymap_turkish_q.h │ │ ├── keymap_uk.h │ │ ├── keymap_ukrainian.h │ │ ├── keymap_us.h │ │ ├── keymap_us_extended.h │ │ ├── keymap_us_international.h │ │ ├── keymap_us_international_linux.h │ │ ├── keymap_workman.h │ │ ├── keymap_workman_zxcvm.h │ │ ├── sendstring_belgian.h │ │ ├── sendstring_bepo.h │ │ ├── sendstring_brazilian_abnt2.h │ │ ├── sendstring_canadian_french.h │ │ ├── sendstring_canadian_multilingual.h │ │ ├── sendstring_colemak.h │ │ ├── sendstring_croatian.h │ │ ├── sendstring_czech.h │ │ ├── sendstring_czech_mac_ansi.h │ │ ├── sendstring_czech_mac_iso.h │ │ ├── sendstring_danish.h │ │ ├── sendstring_dvorak.h │ │ ├── sendstring_dvorak_fr.h │ │ ├── sendstring_dvorak_programmer.h │ │ ├── sendstring_estonian.h │ │ ├── sendstring_finnish.h │ │ ├── sendstring_french.h │ │ ├── sendstring_french_afnor.h │ │ ├── sendstring_french_mac_iso.h │ │ ├── sendstring_german.h │ │ ├── sendstring_german_mac_iso.h │ │ ├── sendstring_hungarian.h │ │ ├── sendstring_icelandic.h │ │ ├── sendstring_italian.h │ │ ├── sendstring_italian_mac_ansi.h │ │ ├── sendstring_italian_mac_iso.h │ │ ├── sendstring_japanese.h │ │ ├── sendstring_latvian.h │ │ ├── sendstring_lithuanian_azerty.h │ │ ├── sendstring_lithuanian_qwerty.h │ │ ├── sendstring_norman.h │ │ ├── sendstring_norwegian.h │ │ ├── sendstring_portuguese.h │ │ ├── sendstring_portuguese_mac_iso.h │ │ ├── sendstring_romanian.h │ │ ├── sendstring_serbian_latin.h │ │ ├── sendstring_slovak.h │ │ ├── sendstring_slovenian.h │ │ ├── sendstring_spanish.h │ │ ├── sendstring_spanish_dvorak.h │ │ ├── sendstring_spanish_latin_america.h │ │ ├── sendstring_swedish.h │ │ ├── sendstring_swiss_de.h │ │ ├── sendstring_swiss_fr.h │ │ ├── sendstring_turkish_f.h │ │ ├── sendstring_turkish_q.h │ │ ├── sendstring_uk.h │ │ ├── sendstring_us_international.h │ │ ├── sendstring_workman.h │ │ └── sendstring_workman_zxcvm.h │ ├── keymap_introspection.c │ ├── keymap_introspection.h │ ├── layer_lock.c │ ├── layer_lock.h │ ├── leader.c │ ├── leader.h │ ├── led.c │ ├── led.h │ ├── led_matrix/ │ │ ├── animations/ │ │ │ ├── alpha_mods_anim.h │ │ │ ├── band_anim.h │ │ │ ├── band_pinwheel_anim.h │ │ │ ├── band_spiral_anim.h │ │ │ ├── breathing_anim.h │ │ │ ├── cycle_left_right_anim.h │ │ │ ├── cycle_out_in_anim.h │ │ │ ├── cycle_up_down_anim.h │ │ │ ├── dual_beacon_anim.h │ │ │ ├── led_matrix_effects.inc │ │ │ ├── runners/ │ │ │ │ ├── effect_runner_dx_dy.h │ │ │ │ ├── effect_runner_dx_dy_dist.h │ │ │ │ ├── effect_runner_i.h │ │ │ │ ├── effect_runner_reactive.h │ │ │ │ ├── effect_runner_reactive_splash.h │ │ │ │ ├── effect_runner_sin_cos_i.h │ │ │ │ └── led_matrix_runners.inc │ │ │ ├── solid_anim.h │ │ │ ├── solid_reactive_cross.h │ │ │ ├── solid_reactive_nexus.h │ │ │ ├── solid_reactive_simple_anim.h │ │ │ ├── solid_reactive_wide.h │ │ │ ├── solid_splash_anim.h │ │ │ ├── wave_left_right_anim.h │ │ │ └── wave_up_down_anim.h │ │ ├── led_matrix.c │ │ ├── led_matrix.h │ │ ├── led_matrix_drivers.c │ │ ├── led_matrix_drivers.h │ │ ├── led_matrix_types.h │ │ └── post_config.h │ ├── led_tables.c │ ├── led_tables.h │ ├── logging/ │ │ ├── debug.c │ │ ├── debug.h │ │ ├── print.c │ │ ├── print.h │ │ ├── print.mk │ │ ├── sendchar.c │ │ └── sendchar.h │ ├── main.c │ ├── matrix.c │ ├── matrix.h │ ├── matrix_common.c │ ├── midi/ │ │ ├── Config/ │ │ │ └── LUFAConfig.h │ │ ├── bytequeue/ │ │ │ ├── COPYING │ │ │ ├── bytequeue.c │ │ │ ├── bytequeue.h │ │ │ ├── interrupt_setting.c │ │ │ └── interrupt_setting.h │ │ ├── midi.c │ │ ├── midi.h │ │ ├── midi_device.c │ │ ├── midi_device.h │ │ ├── midi_function_types.h │ │ ├── qmk_midi.c │ │ ├── qmk_midi.h │ │ ├── sysex_tools.c │ │ └── sysex_tools.h │ ├── modifiers.h │ ├── mousekey.c │ ├── mousekey.h │ ├── nvm/ │ │ ├── eeprom/ │ │ │ ├── nvm_dynamic_keymap.c │ │ │ ├── nvm_eeconfig.c │ │ │ ├── nvm_eeprom_eeconfig_internal.h │ │ │ ├── nvm_eeprom_via_internal.h │ │ │ └── nvm_via.c │ │ ├── nvm_dynamic_keymap.h │ │ ├── nvm_eeconfig.h │ │ ├── nvm_via.h │ │ ├── readme.md │ │ └── rules.mk │ ├── os_detection/ │ │ └── tests/ │ │ ├── os_detection.cpp │ │ ├── rules.mk │ │ └── testlist.mk │ ├── os_detection.c │ ├── os_detection.h │ ├── painter/ │ │ ├── lvgl/ │ │ │ ├── qp_lvgl.c │ │ │ ├── qp_lvgl.h │ │ │ └── rules.mk │ │ ├── qff.c │ │ ├── qff.h │ │ ├── qgf.c │ │ ├── qgf.h │ │ ├── qp.c │ │ ├── qp.h │ │ ├── qp_comms.c │ │ ├── qp_comms.h │ │ ├── qp_draw.h │ │ ├── qp_draw_circle.c │ │ ├── qp_draw_codec.c │ │ ├── qp_draw_core.c │ │ ├── qp_draw_ellipse.c │ │ ├── qp_draw_image.c │ │ ├── qp_draw_text.c │ │ ├── qp_internal.c │ │ ├── qp_internal.h │ │ ├── qp_internal_driver.h │ │ ├── qp_internal_formats.h │ │ ├── qp_stream.c │ │ ├── qp_stream.h │ │ └── rules.mk │ ├── pointing_device/ │ │ ├── pointing_device.c │ │ ├── pointing_device.h │ │ ├── pointing_device_auto_mouse.c │ │ ├── pointing_device_auto_mouse.h │ │ ├── pointing_device_gestures.c │ │ └── pointing_device_gestures.h │ ├── pointing_device_internal.h │ ├── process_keycode/ │ │ ├── autocorrect_data_default.h │ │ ├── process_achordion.c │ │ ├── process_achordion.h │ │ ├── process_audio.c │ │ ├── process_audio.h │ │ ├── process_auto_shift.c │ │ ├── process_auto_shift.h │ │ ├── process_autocorrect.c │ │ ├── process_autocorrect.h │ │ ├── process_backlight.c │ │ ├── process_backlight.h │ │ ├── process_caps_word.c │ │ ├── process_caps_word.h │ │ ├── process_clicky.c │ │ ├── process_clicky.h │ │ ├── process_combo.c │ │ ├── process_combo.h │ │ ├── process_connection.c │ │ ├── process_connection.h │ │ ├── process_default_layer.c │ │ ├── process_default_layer.h │ │ ├── process_dynamic_macro.c │ │ ├── process_dynamic_macro.h │ │ ├── process_dynamic_tapping_term.c │ │ ├── process_dynamic_tapping_term.h │ │ ├── process_grave_esc.c │ │ ├── process_grave_esc.h │ │ ├── process_haptic.c │ │ ├── process_haptic.h │ │ ├── process_joystick.c │ │ ├── process_joystick.h │ │ ├── process_key_lock.c │ │ ├── process_key_lock.h │ │ ├── process_key_override.c │ │ ├── process_key_override.h │ │ ├── process_layer_lock.c │ │ ├── process_layer_lock.h │ │ ├── process_leader.c │ │ ├── process_leader.h │ │ ├── process_led_matrix.c │ │ ├── process_led_matrix.h │ │ ├── process_magic.c │ │ ├── process_magic.h │ │ ├── process_midi.c │ │ ├── process_midi.h │ │ ├── process_music.c │ │ ├── process_music.h │ │ ├── process_programmable_button.c │ │ ├── process_programmable_button.h │ │ ├── process_repeat_key.c │ │ ├── process_repeat_key.h │ │ ├── process_rgb_matrix.c │ │ ├── process_rgb_matrix.h │ │ ├── process_secure.c │ │ ├── process_secure.h │ │ ├── process_sequencer.c │ │ ├── process_sequencer.h │ │ ├── process_space_cadet.c │ │ ├── process_space_cadet.h │ │ ├── process_steno.c │ │ ├── process_steno.h │ │ ├── process_tap_dance.c │ │ ├── process_tap_dance.h │ │ ├── process_tri_layer.c │ │ ├── process_tri_layer.h │ │ ├── process_ucis.c │ │ ├── process_ucis.h │ │ ├── process_underglow.c │ │ ├── process_underglow.h │ │ ├── process_unicode.c │ │ ├── process_unicode.h │ │ ├── process_unicode_common.c │ │ ├── process_unicode_common.h │ │ ├── process_unicodemap.c │ │ └── process_unicodemap.h │ ├── programmable_button.c │ ├── programmable_button.h │ ├── quantum.c │ ├── quantum.h │ ├── quantum_keycodes.h │ ├── quantum_keycodes_legacy.h │ ├── raw_hid.c │ ├── raw_hid.h │ ├── repeat_key.c │ ├── repeat_key.h │ ├── rgb_matrix/ │ │ ├── animations/ │ │ │ ├── alpha_mods_anim.h │ │ │ ├── breathing_anim.h │ │ │ ├── colorband_pinwheel_sat_anim.h │ │ │ ├── colorband_pinwheel_val_anim.h │ │ │ ├── colorband_sat_anim.h │ │ │ ├── colorband_spiral_sat_anim.h │ │ │ ├── colorband_spiral_val_anim.h │ │ │ ├── colorband_val_anim.h │ │ │ ├── cycle_all_anim.h │ │ │ ├── cycle_left_right_anim.h │ │ │ ├── cycle_out_in_anim.h │ │ │ ├── cycle_out_in_dual_anim.h │ │ │ ├── cycle_pinwheel_anim.h │ │ │ ├── cycle_spiral_anim.h │ │ │ ├── cycle_up_down_anim.h │ │ │ ├── digital_rain_anim.h │ │ │ ├── dual_beacon_anim.h │ │ │ ├── flower_blooming_anim.h │ │ │ ├── gradient_left_right_anim.h │ │ │ ├── gradient_up_down_anim.h │ │ │ ├── hue_breathing_anim.h │ │ │ ├── hue_pendulum_anim.h │ │ │ ├── hue_wave_anim.h │ │ │ ├── jellybean_raindrops_anim.h │ │ │ ├── pixel_flow_anim.h │ │ │ ├── pixel_fractal_anim.h │ │ │ ├── pixel_rain_anim.h │ │ │ ├── rainbow_beacon_anim.h │ │ │ ├── rainbow_moving_chevron_anim.h │ │ │ ├── rainbow_pinwheels_anim.h │ │ │ ├── raindrops_anim.h │ │ │ ├── rgb_matrix_effects.inc │ │ │ ├── riverflow_anim.h │ │ │ ├── runners/ │ │ │ │ ├── effect_runner_dx_dy.h │ │ │ │ ├── effect_runner_dx_dy_dist.h │ │ │ │ ├── effect_runner_i.h │ │ │ │ ├── effect_runner_reactive.h │ │ │ │ ├── effect_runner_reactive_splash.h │ │ │ │ ├── effect_runner_sin_cos_i.h │ │ │ │ └── rgb_matrix_runners.inc │ │ │ ├── solid_color_anim.h │ │ │ ├── solid_reactive_anim.h │ │ │ ├── solid_reactive_cross.h │ │ │ ├── solid_reactive_nexus.h │ │ │ ├── solid_reactive_simple_anim.h │ │ │ ├── solid_reactive_wide.h │ │ │ ├── solid_splash_anim.h │ │ │ ├── splash_anim.h │ │ │ ├── starlight_anim.h │ │ │ ├── starlight_dual_hue_anim.h │ │ │ ├── starlight_dual_sat_anim.h │ │ │ ├── starlight_smooth_anim.h │ │ │ └── typing_heatmap_anim.h │ │ ├── post_config.h │ │ ├── rgb_matrix.c │ │ ├── rgb_matrix.h │ │ ├── rgb_matrix_drivers.c │ │ ├── rgb_matrix_drivers.h │ │ └── rgb_matrix_types.h │ ├── rgblight/ │ │ ├── rgblight.c │ │ ├── rgblight.h │ │ ├── rgblight_breathe_table.h │ │ ├── rgblight_drivers.c │ │ ├── rgblight_drivers.h │ │ ├── rgblight_modes.h │ │ └── rgblight_post_config.h │ ├── ring_buffer.h │ ├── secure.c │ ├── secure.h │ ├── send_string/ │ │ ├── send_string.c │ │ ├── send_string.h │ │ └── send_string_keycodes.h │ ├── sequencer/ │ │ ├── sequencer.c │ │ ├── sequencer.h │ │ └── tests/ │ │ ├── midi_mock.c │ │ ├── midi_mock.h │ │ ├── rules.mk │ │ ├── sequencer_tests.cpp │ │ └── testlist.mk │ ├── split_common/ │ │ ├── post_config.h │ │ ├── split_util.c │ │ ├── split_util.h │ │ ├── transaction_id_define.h │ │ ├── transactions.c │ │ ├── transactions.h │ │ ├── transport.c │ │ └── transport.h │ ├── steno_keycodes.h │ ├── sync_timer.c │ ├── sync_timer.h │ ├── tri_layer.c │ ├── tri_layer.h │ ├── unicode/ │ │ ├── ucis.c │ │ ├── ucis.h │ │ ├── unicode.c │ │ ├── unicode.h │ │ ├── unicode_keycodes.h │ │ ├── unicodemap.c │ │ ├── unicodemap.h │ │ ├── utf8.c │ │ └── utf8.h │ ├── util.h │ ├── variable_trace.c │ ├── variable_trace.h │ ├── via.c │ ├── via.h │ ├── virtser.h │ ├── wear_leveling/ │ │ ├── tests/ │ │ │ ├── backing_mocks.cpp │ │ │ ├── backing_mocks.hpp │ │ │ ├── rules.mk │ │ │ ├── testlist.mk │ │ │ ├── wear_leveling_2byte.cpp │ │ │ ├── wear_leveling_2byte_optimized_writes.cpp │ │ │ ├── wear_leveling_4byte.cpp │ │ │ ├── wear_leveling_8byte.cpp │ │ │ └── wear_leveling_general.cpp │ │ ├── wear_leveling.c │ │ ├── wear_leveling.h │ │ ├── wear_leveling_drivers.h │ │ └── wear_leveling_internal.h │ ├── wpm.c │ └── wpm.h ├── readme.md ├── requirements-dev.txt ├── requirements.txt ├── setup.cfg ├── tests/ │ ├── audio/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_audio.cpp │ ├── auto_shift/ │ │ ├── auto_shift_repeat/ │ │ │ ├── auto_shift_no_auto_repeat/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ └── test_auto_shift.cpp │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_auto_shift.cpp │ │ ├── config.h │ │ ├── retro_shift/ │ │ │ └── tap_hold_configurations/ │ │ │ ├── default_mod_tap/ │ │ │ │ ├── config.h │ │ │ │ ├── no_timeout/ │ │ │ │ │ ├── config.h │ │ │ │ │ ├── test.mk │ │ │ │ │ └── test_retro_shift.cpp │ │ │ │ ├── test.mk │ │ │ │ └── test_retro_shift.cpp │ │ │ ├── hold_on_other_key_press/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ └── test_retro_shift.cpp │ │ │ ├── permissive_hold/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ └── test_retro_shift.cpp │ │ │ └── permissive_hold_hold_on_other_key_press/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_retro_shift.cpp │ │ ├── test.mk │ │ └── test_auto_shift.cpp │ ├── autocorrect/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_autocorrect.cpp │ ├── basic/ │ │ ├── config.h │ │ ├── test.mk │ │ ├── test_action_layer.cpp │ │ ├── test_keypress.cpp │ │ ├── test_one_shot_keys.cpp │ │ └── test_tapping.cpp │ ├── caps_word/ │ │ ├── auto_shift/ │ │ │ ├── config.h │ │ │ ├── retro_shift/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ └── test_caps_word_retroshift.cpp │ │ │ ├── test.mk │ │ │ └── test_caps_word_autoshift.cpp │ │ ├── caps_word_combo/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_caps_word_combo.cpp │ │ │ └── test_combos.c │ │ ├── caps_word_invert_on_shift/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_caps_word_invert_on_shift.cpp │ │ ├── config.h │ │ ├── test.mk │ │ ├── test_caps_word.cpp │ │ └── unicodemap/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_caps_word_unicodemap.cpp │ ├── combo/ │ │ ├── combo_repress/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_combo.cpp │ │ │ └── test_combos_repress.c │ │ ├── config.h │ │ ├── test.mk │ │ ├── test_combo.cpp │ │ └── test_combos.c │ ├── housekeeping/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_housekeeping.cpp │ ├── keycode_string/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_keycode_string.cpp │ ├── layer_lock/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_layer_lock.cpp │ ├── leader/ │ │ ├── config.h │ │ ├── leader_no_initial_timeout/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_leader_no_initial_timeout.cpp │ │ ├── leader_per_key_timeout/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_leader_per_key_timeout.cpp │ │ ├── leader_sequences.c │ │ ├── leader_strict_key_processing/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_leader_strict_key_processing.cpp │ │ ├── test.mk │ │ └── test_leader.cpp │ ├── mousekeys/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_mousekeys.cpp │ ├── no_tapping/ │ │ ├── no_action_tapping/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_layer_tap.cpp │ │ │ ├── test_mod_tap.cpp │ │ │ └── test_one_shot_keys.cpp │ │ └── no_mod_tap_mods/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_tapping.cpp │ ├── pointing/ │ │ ├── config.h │ │ ├── invertandrotate/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_invertandrotate.cpp │ │ ├── invertxy/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_invertxy.cpp │ │ ├── rotate180/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_rotate180.cpp │ │ ├── rotate270/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_rotate270.cpp │ │ ├── rotate90/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_rotate90.cpp │ │ ├── test.mk │ │ └── test_pointing.cpp │ ├── repeat_key/ │ │ ├── alt_repeat_key/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_alt_repeat_key.cpp │ │ ├── config.h │ │ ├── repeat_key_combo/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_combos.c │ │ │ └── test_repeat_key_combo.cpp │ │ ├── test.mk │ │ └── test_repeat_key.cpp │ ├── secure/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_secure.cpp │ ├── tap_dance/ │ │ ├── config.h │ │ ├── examples.c │ │ ├── examples.h │ │ ├── tap_dance_layers/ │ │ │ ├── config.h │ │ │ ├── tap_dance_defs.c │ │ │ ├── tap_dance_defs.h │ │ │ ├── test.mk │ │ │ └── test_tap_dance_layers.cpp │ │ ├── test.mk │ │ └── test_examples.cpp │ ├── tap_hold_configurations/ │ │ ├── chordal_hold/ │ │ │ ├── default/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ ├── test_keymap.c │ │ │ │ ├── test_one_shot_keys.cpp │ │ │ │ └── test_tap_hold.cpp │ │ │ ├── hold_on_other_key_press/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ ├── test_keymap.c │ │ │ │ └── test_tap_hold.cpp │ │ │ ├── permissive_hold/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ ├── test_keymap.c │ │ │ │ ├── test_one_shot_keys.cpp │ │ │ │ └── test_tap_hold.cpp │ │ │ ├── permissive_hold_flow_tap/ │ │ │ │ ├── config.h │ │ │ │ ├── test.mk │ │ │ │ ├── test_keymap.c │ │ │ │ ├── test_one_shot_keys.cpp │ │ │ │ └── test_tap_hold.cpp │ │ │ └── retro_shift_permissive_hold/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_keymap.c │ │ │ └── test_retro_shift.cpp │ │ ├── default_mod_tap/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_one_shot_layer.cpp │ │ │ └── test_tap_hold.cpp │ │ ├── flow_tap/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_keymap.c │ │ │ └── test_tap_hold.cpp │ │ ├── hold_on_other_key_press/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ └── test_tap_hold.cpp │ │ ├── permissive_hold/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_one_shot_keys.cpp │ │ │ └── test_tap_hold.cpp │ │ ├── quick_tap/ │ │ │ ├── config.h │ │ │ ├── test.mk │ │ │ ├── test_action_layer.cpp │ │ │ └── test_quick_tap.cpp │ │ └── retro_tapping/ │ │ ├── config.h │ │ ├── test.mk │ │ ├── test_key_roll.cpp │ │ ├── test_neutralization.cpp │ │ ├── test_tap_hold.cpp │ │ └── test_tapping.cpp │ ├── test_common/ │ │ ├── build.mk │ │ ├── keyboard_report_util.cpp │ │ ├── keyboard_report_util.hpp │ │ ├── keymap.c │ │ ├── main.cpp │ │ ├── matrix.c │ │ ├── mouse_report_util.cpp │ │ ├── mouse_report_util.hpp │ │ ├── pointing_device_driver.c │ │ ├── test_common.h │ │ ├── test_common.hpp │ │ ├── test_driver.cpp │ │ ├── test_driver.hpp │ │ ├── test_fixture.cpp │ │ ├── test_fixture.hpp │ │ ├── test_keymap_key.cpp │ │ ├── test_keymap_key.hpp │ │ ├── test_logger.cpp │ │ ├── test_logger.hpp │ │ ├── test_matrix.h │ │ └── test_pointing_device_driver.h │ ├── tri_layer/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_tri_layer.cpp │ └── unicode/ │ ├── config.h │ ├── test.mk │ ├── test_unicode.cpp │ ├── unicode_basic/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_unicode_basic.cpp │ ├── unicode_map/ │ │ ├── config.h │ │ ├── test.mk │ │ └── test_unicode_map.cpp │ └── unicode_ucis/ │ ├── config.h │ ├── test.mk │ └── test_unicode_ucis.cpp ├── tmk_core/ │ ├── protocol/ │ │ ├── chibios/ │ │ │ ├── README.md │ │ │ ├── chibios.c │ │ │ ├── chibios.mk │ │ │ ├── init_hooks.h │ │ │ ├── lufa_utils/ │ │ │ │ └── LUFA/ │ │ │ │ └── Drivers/ │ │ │ │ └── USB/ │ │ │ │ └── USB.h │ │ │ ├── usb_driver.c │ │ │ ├── usb_driver.h │ │ │ ├── usb_endpoints.c │ │ │ ├── usb_endpoints.h │ │ │ ├── usb_main.c │ │ │ ├── usb_main.h │ │ │ ├── usb_report_handling.c │ │ │ ├── usb_report_handling.h │ │ │ └── usb_util.c │ │ ├── host.c │ │ ├── host.h │ │ ├── host_driver.h │ │ ├── lufa/ │ │ │ ├── lufa.c │ │ │ ├── lufa.h │ │ │ ├── lufa.mk │ │ │ └── usb_util.c │ │ ├── report.c │ │ ├── report.h │ │ ├── usb_descriptor.c │ │ ├── usb_descriptor.h │ │ ├── usb_descriptor_common.h │ │ ├── usb_device_state.c │ │ ├── usb_device_state.h │ │ ├── usb_hid/ │ │ │ ├── README │ │ │ ├── override_Serial.cpp │ │ │ ├── override_wiring.c │ │ │ ├── parser.cpp │ │ │ ├── parser.h │ │ │ ├── usb_hid.h │ │ │ └── usb_hid.mk │ │ ├── usb_types.h │ │ ├── usb_util.c │ │ ├── usb_util.h │ │ └── vusb/ │ │ ├── protocol.c │ │ ├── usb_util.c │ │ ├── usbconfig.h │ │ ├── vusb.c │ │ ├── vusb.h │ │ └── vusb.mk │ ├── protocol.mk │ └── readme.md └── util/ ├── audio_generate_dac_lut.py ├── chibios_conf_updater.sh ├── ci/ │ ├── discord-results.py │ ├── firmware_list_generator.py │ ├── generate_failure_markdown.sh │ ├── index_generator.py │ ├── requirements.txt │ └── templates/ │ └── index.html.j2 ├── docker_build.sh ├── docker_cmd.sh ├── drivers.txt ├── env-bootstrap.sh ├── install/ │ ├── arch.sh │ ├── debian.sh │ ├── fedora.sh │ ├── freebsd.sh │ ├── gentoo.sh │ ├── linux_shared.sh │ ├── macos.sh │ ├── msys2.sh │ ├── slackware.sh │ ├── solus.sh │ └── void.sh ├── list-moved-keyboards.sh ├── polling_rate.py ├── qmk_install.sh ├── qmk_tab_complete.sh ├── regen.sh ├── rules_cleaner.sh ├── sample_parser.py ├── size_regression.sh ├── stm32eeprom_parser.py ├── udev/ │ └── 50-qmk.rules ├── uf2conv.py ├── uf2families.json ├── update_chibios_mirror.sh ├── usb_detach/ │ ├── Makefile │ ├── readme.md │ └── usb_detach.c └── wavetable_parser.py